文档章节

JavaBean

素人派
 素人派
发布于 2016/12/31 20:48
字数 516
阅读 2
收藏 0
  • 介绍
本文介绍有关JavaBean的内容。
  • getter和setter方法命名规范
这里有两种情况:
  1. 对应属性名的第一个或者第二个字母为大写,则保持不变;
  2. 首字母要变为大写;
另外,如果属性的类型为布尔值的话,对应的getter方法应该是is开头而不是get 下面给出一个简单的实现: [codesyntax lang="php"]
/**
 * 根据字段的名称查找字段的 get 方法: 先检查是否有不带参数的 getXxx() 方法,如果没有再检查是否有不带参数的 isXxx() 方法
 * @param clazz 字段所在的类
 * @param fieldName 字段名称
 * @return 字段对应的 get 方法,如果没有对应的 get 方法,则返回 <code>null</code>
 */
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 方法,则返回 <code>null</code>
 */
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 方法,则返回 <code>null</code>
 */
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);
}
[/codesyntax]

本文转载自:http://surenpi.com/2016/06/16/javabean/

上一篇: 哥谭.Gotham
素人派
粉丝 26
博文 1907
码字总数 10223
作品 6
东城
程序员
私信 提问

暂无文章

一、docker 入坑(win10和Ubuntu 安装)

前言 终究还是绕不过去了,要学的知识真的是太多了,好在我们还有时间,docker 之前只闻其声,不曾真正的接触过,现在docker 越来越火,很多公司也都开始使用了。所以对于我们程序员而言,又...

quellanan2
15分钟前
4
0
AutoCompleteTextView

小技巧按菜单键 当菜单打开之前会调用onMenuOpened(int featereId,Menu menu),可以重写这个方法,弹出对话框或者Popmenu 再布局中添加控件AutoCompleteTextView. <AutoCompleteTextVie...

逆天游云
19分钟前
4
0
谷歌软件商店:推出5美元会员 可用数百个软件

腾讯科技讯,谷歌和苹果是全球两大智能手机操作系统的运营者,两家公司旗下分别拥有占据行业垄断地位的谷歌软件商店和苹果软件商店。据外媒最新消息,手机软件商店的商业模式正在发生一些变化...

linuxCool
41分钟前
3
0
RocketMQ 多副本前置篇:初探raft协议

Raft协议是分布式领域解决一致性的又一著名协议,主要包含Leader选举、日志复制两个部分。 温馨提示: 本文根据raft官方给出的raft动画进行学习,其动画展示地址:http://thesecretlivesofda...

中间件兴趣圈
41分钟前
3
0
elasticsearch 6.8.0 添加认证

1. 修改elasticsearch-6.8.0/config/elasticsearch.yml 最后添加一行:xpack.security.enabled: true 2. 初始化用户和密码 ./bin/elasticsearch-setup-passwords interactive 我这里初始化为......

coord
43分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部