java素人,JavaBean - 素人派的个人页面 - OSCHINA - 中文开源技术交流社区

/**

* 根据字段的名称查找字段的 get 方法: 先检查是否有不带参数的 getXxx() 方法,如果没有再检查是否有不带参数的 isXxx() 方法

* @param clazz 字段所在的类

* @param fieldName 字段名称

* @return 字段对应的 get 方法,如果没有对应的 get 方法,则返回 null

*/

public static Method findGetMethod(Class> clazz, String fieldName) {

Field field = getField(clazz, fieldName);

if(field != null) {

return findGetMethod(clazz, field);

}

String getMethodSuffix = findGetAndSetSuffix(fieldName);

Method getMethod = findMethod(clazz, "get" + getMethodSuffix);

if (getMethod == null) { // boolean 类型字段的 get 方法为 isXxx() 的形式

getMethod = findMethod(clazz, "is" + getMethodSuffix);

}

return getMethod;

}

/**

* 查找字段的 get 方法: 先检查是否有不带参数的 getXxx() 方法,如果没有再检查是否有不带参数的 isXxx() 方法

* @param clazz 字段所在的类

* @param field 字段

* @return 字段对应的 get 方法,如果没有对应的 get 方法,则返回 null

*/

public static Method findGetMethod(Class> clazz, Field field) {

String getMethodSuffix = findGetAndSetSuffix(field.getName());

Method getMethod = findMethod(clazz, "get" + getMethodSuffix);

if (getMethod == null && (field.getType() == boolean.class || field.getType() == Boolean.class)) {

// boolean 类型字段的 get 方法为 isXxx() 的形式

getMethod = findMethod(clazz, "is" + getMethodSuffix);

}

return getMethod;

}

/**

* 查找字段的 set 方法

* @param clazz 字段所在的类

* @param field 字段

* @return 字段对应的 set 方法,如果没有对应的 set 方法,则返回 null

*/

public static Method findSetMethod(Class> clazz, Field field) {

return findMethod(clazz, "set" + findGetAndSetSuffix(field.getName()), field.getType());

}

/**

* 获取getter或者setter方法的后缀

* @param fieldName

* @return

*/

public static String findGetAndSetSuffix(String fieldName){

if(fieldName.length() == 1){

if(fieldName.toUpperCase().equals(fieldName)){ //如果只有一个字母,并且是大写

return fieldName;

}

}else{

String firstChar = fieldName.substring(0, 1);

if(firstChar.equals(firstChar.toUpperCase())){ //如果第一个字母是大写

return fieldName;

}

String secondChar = fieldName.substring(1, 2);

if(secondChar.equals(secondChar.toUpperCase())){ //如果第二个字母是大写

return fieldName;

}

}

return WordUtils.capitalize(fieldName);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值