public class BeanDesc extends Object implements Serializable
1. 忽略字段和方法名的大小写 2. Getter查找getXXX、isXXX、getIsXXX 3. Setter查找setXXX、setIsXXX 4. Setter忽略参数值与字段值不匹配的情况,因此有多个参数类型的重载时,会调用首次匹配的
| 限定符和类型 | 字段和说明 |
|---|---|
private Class<?> |
beanClass
Bean类
|
private Map<String,PropDesc> |
propMap
属性Map
|
private static long |
serialVersionUID |
| 限定符和类型 | 方法和说明 |
|---|---|
private PropDesc |
createProp(Field field,
Method[] methods)
根据字段创建属性描述
查找Getter和Setter方法时会: 1. |
private PropDesc |
findProp(Field field,
Method[] methods,
boolean ignoreCase)
查找字段对应的Getter和Setter方法
|
Field |
getField(String fieldName)
获得字段名对应的字段对象,如果不存在返回null
|
Method |
getGetter(String fieldName)
获取Getter方法,如果不存在返回null
|
String |
getName()
获取Bean的全类名
|
PropDesc |
getProp(String fieldName)
获取属性,如果不存在返回null
|
Map<String,PropDesc> |
getPropMap(boolean ignoreCase)
获取字段名-字段属性Map
|
Collection<PropDesc> |
getProps()
获取字段属性列表
|
Method |
getSetter(String fieldName)
获取Setter方法,如果不存在返回null
|
String |
getSimpleName()
获取Bean的简单类名
|
private BeanDesc |
init()
初始化
只有与属性关联的相关Getter和Setter方法才会被读取,无关的getXXX和setXXX都被忽略 |
private boolean |
isMatchGetter(String methodName,
String fieldName,
boolean isBooleanField,
boolean ignoreCase)
方法是否为Getter方法
匹配规则如下(忽略大小写): 字段名 -》 方法名 isName -》 isName isName -》 isIsName isName -》 getIsName name -》 isName name -》 getName |
private boolean |
isMatchSetter(String methodName,
String fieldName,
boolean isBooleanField,
boolean ignoreCase)
方法是否为Setter方法
匹配规则如下(忽略大小写): 字段名 -》 方法名 isName -》 setName isName -》 setIsName name -》 setName |
private static final long serialVersionUID
private final Class<?> beanClass
public BeanDesc(Class<?> beanClass)
beanClass - Bean类public String getName()
public String getSimpleName()
public Map<String,PropDesc> getPropMap(boolean ignoreCase)
ignoreCase - 是否忽略大小写,true为忽略,false不忽略public Collection<PropDesc> getProps()
PropDesc 列表public Field getField(String fieldName)
fieldName - 字段名public Method getGetter(String fieldName)
fieldName - 字段名public Method getSetter(String fieldName)
fieldName - 字段名private BeanDesc init()
private PropDesc createProp(Field field, Method[] methods)
1. 忽略字段和方法名的大小写 2. Getter查找getXXX、isXXX、getIsXXX 3. Setter查找setXXX、setIsXXX 4. Setter忽略参数值与字段值不匹配的情况,因此有多个参数类型的重载时,会调用首次匹配的
field - 字段methods - 类中所有的方法PropDescprivate PropDesc findProp(Field field, Method[] methods, boolean ignoreCase)
field - 字段methods - 类中所有的方法ignoreCase - 是否忽略大小写匹配private boolean isMatchGetter(String methodName, String fieldName, boolean isBooleanField, boolean ignoreCase)
字段名 -》 方法名 isName -》 isName isName -》 isIsName isName -》 getIsName name -》 isName name -》 getName
methodName - 方法名fieldName - 字段名isBooleanField - 是否为Boolean类型字段ignoreCase - 匹配是否忽略大小写private boolean isMatchSetter(String methodName, String fieldName, boolean isBooleanField, boolean ignoreCase)
字段名 -》 方法名 isName -》 setName isName -》 setIsName name -》 setName
methodName - 方法名fieldName - 字段名isBooleanField - 是否为Boolean类型字段ignoreCase - 匹配是否忽略大小写Copyright © 2020. All rights reserved.