public class PropDesc extends Object
属性描述,包括了字段、getter、setter和相应的方法执行
| 限定符和类型 | 字段和说明 |
|---|---|
(专用程序包) Field |
field
字段
|
protected Method |
getter
Getter方法
|
protected Method |
setter
Setter方法
|
| 限定符和类型 | 方法和说明 |
|---|---|
private Class<?> |
findPropClass(Method getter,
Method setter)
通过Getter和Setter方法中找到属性类型
|
private Type |
findPropType(Method getter,
Method setter)
通过Getter和Setter方法中找到属性类型
|
Field |
getField()
获取字段
|
Class<?> |
getFieldClass()
获得字段类型
先获取字段的类型,如果字段不存在,则获取Getter方法的返回类型,否则获取Setter的第一个参数类型 |
String |
getFieldName()
获取字段名,如果存在Alias注解,读取注解的值作为名称
|
Type |
getFieldType()
获得字段类型
先获取字段的类型,如果字段不存在,则获取Getter方法的返回类型,否则获取Setter的第一个参数类型 |
Method |
getGetter()
获取Getter方法,可能为
null |
String |
getRawFieldName()
获取字段名称
|
Method |
getSetter()
获取Setter方法,可能为
null |
Object |
getValue(Object bean)
获取属性值
首先调用字段对应的Getter方法获取值,如果Getter方法不存在,则判断字段如果为public,则直接获取字段值 此方法不检查任何注解,使用前需调用 isReadable(boolean) 检查是否可读 |
Object |
getValue(Object bean,
Type targetType,
boolean ignoreError)
获取属性值,自动转换属性值类型
首先调用字段对应的Getter方法获取值,如果Getter方法不存在,则判断字段如果为public,则直接获取字段值 |
private boolean |
isIgnoreGet()
检查字段是否被忽略读,通过
PropIgnore 注解完成,规则为:
1. |
private boolean |
isIgnoreSet()
检查字段是否被忽略写,通过
PropIgnore 注解完成,规则为:
1. |
boolean |
isReadable(boolean checkTransient)
检查属性是否可读(即是否可以通过
getValue(Object)获取到值) |
private boolean |
isTransientForGet()
字段和Getter方法是否为Transient关键字修饰的
|
private boolean |
isTransientForSet()
字段和Getter方法是否为Transient关键字修饰的
|
boolean |
isWritable(boolean checkTransient)
检查属性是否可读(即是否可以通过
getValue(Object)获取到值) |
PropDesc |
setValue(Object bean,
Object value)
设置Bean的字段值
首先调用字段对应的Setter方法,如果Setter方法不存在,则判断字段如果为public,则直接赋值字段值 此方法不检查任何注解,使用前需调用 isWritable(boolean) 检查是否可写 |
PropDesc |
setValue(Object bean,
Object value,
boolean ignoreNull,
boolean ignoreError)
设置属性值,可以自动转换字段类型为目标类型
|
final Field field
protected Method getter
protected Method setter
public String getFieldName()
public String getRawFieldName()
public Field getField()
public Type getFieldType()
public Class<?> getFieldClass()
public Method getGetter()
nullpublic boolean isReadable(boolean checkTransient)
getValue(Object)获取到值)checkTransient - 是否检查Transient关键字或注解public Object getValue(Object bean)
isReadable(boolean) 检查是否可读bean - Bean对象public Object getValue(Object bean, Type targetType, boolean ignoreError)
bean - Bean对象targetType - 返回属性值需要转换的类型,null表示不转换ignoreError - 是否忽略错误,包括转换错误和注入错误public boolean isWritable(boolean checkTransient)
getValue(Object)获取到值)checkTransient - 是否检查Transient关键字或注解public PropDesc setValue(Object bean, Object value)
isWritable(boolean) 检查是否可写bean - Bean对象value - 值,必须与字段值类型匹配public PropDesc setValue(Object bean, Object value, boolean ignoreNull, boolean ignoreError)
bean - Bean对象value - 属性值,可以为任意类型ignoreNull - 是否忽略null值,true表示忽略ignoreError - 是否忽略错误,包括转换错误和注入错误private Type findPropType(Method getter, Method setter)
getter - Getter方法setter - Setter方法Typeprivate Class<?> findPropClass(Method getter, Method setter)
getter - Getter方法setter - Setter方法Typeprivate boolean isIgnoreSet()
PropIgnore 注解完成,规则为:
1. 在字段上有PropIgnore 注解
2. 在setXXX方法上有PropIgnore 注解
private boolean isIgnoreGet()
PropIgnore 注解完成,规则为:
1. 在字段上有PropIgnore 注解
2. 在getXXX方法上有PropIgnore 注解
private boolean isTransientForGet()
private boolean isTransientForSet()
Copyright © 2020. All rights reserved.