T - 字段依附的类F - 字段的数据类型public interface Attribute<T,F>
public class Record {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
获取name的 Attribute :
Attribute<Record, String> nameAction = Attribute.create(Record.class.getDeclaredField("name"));
等价于:
Attribute<Record, String> nameAction = new Attribute<Record, String>() {
@Override
public String field() {
return "name";
}
@Override
public String get(Record obj) {
return obj.getName();
}
@Override
public void set(Record obj, String value) {
obj.setName(value);
}
@Override
public Class type() {
return String.class;
}
@Override
public Class declaringClass() {
return Record.class;
}
};
映射Field时,field必须满足以下条件之一:
1、field属性是public且非final
2、至少存在对应的getter、setter方法中的一个
当不存在getter方法时,get操作固定返回null
当不存在setter方法时,set操作为空方法
详情见: http://redkale.org
| 限定符和类型 | 方法和说明 |
|---|---|
static <T> Attribute<T,?>[] |
create(java.lang.Class<T> clazz)
根据Class生成getter、setter方法都存在的字段对应的 Attribute 对象数组。
|
static <T,F> Attribute<T,F> |
create(java.lang.Class<T> clazz,
java.lang.reflect.Field field)
根据一个Class和Field生成 Attribute 对象。
|
static <T,F> Attribute<T,F> |
create(java.lang.Class<T> clazz,
java.lang.reflect.Method getter,
java.lang.reflect.Method setter)
根据Class、getter和setter方法生成 Attribute 对象。
|
static <T,F> Attribute<T,F> |
create(java.lang.Class<T> clazz,
java.lang.String fieldname)
根据一个Class和field真实名称生成 Attribute 对象。
|
static <T,F> Attribute<T,F> |
create(java.lang.Class<T> clazz,
java.lang.String fieldalias,
java.lang.Class<F> fieldtype)
根据Class、字段别名、字段类型生成虚构的 Attribute 对象,get、set方法为空方法。
|
static <T,F> Attribute<T,F> |
create(java.lang.Class<T> clazz,
java.lang.String fieldalias,
java.lang.Class<F> fieldtype,
java.lang.reflect.Field field,
java.lang.reflect.Method getter,
java.lang.reflect.Method setter)
根据Class、字段别名、字段类型、Field、getter和setter方法生成 Attribute 对象。
|
static <T,F> Attribute<T,F> |
create(java.lang.Class<T> clazz,
java.lang.String fieldname,
java.lang.Class<F> fieldtype,
java.util.function.Function<T,F> getter,
java.util.function.BiConsumer<T,F> setter)
根据Class、字段名、字段类型、getter和setter方法生成 Attribute 对象。
|
static <T,F> Attribute<T,F> |
create(java.lang.Class<T> clazz,
java.lang.String fieldalias,
java.lang.reflect.Field field)
根据一个Class、field别名和Field生成 Attribute 对象。
|
static <T,F> Attribute<T,F> |
create(java.lang.Class<T> clazz,
java.lang.String fieldalias,
java.lang.reflect.Field field,
java.lang.reflect.Method getter,
java.lang.reflect.Method setter)
根据Class、字段别名、Field、getter和setter方法生成 Attribute 对象。
|
static <T,F> Attribute<T,F> |
create(java.lang.Class<T> clazz,
java.lang.String fieldalias,
java.lang.reflect.Method getter,
java.lang.reflect.Method setter)
根据Class、字段别名、getter和setter方法生成 Attribute 对象。
|
static <T,F> Attribute<T,F> |
create(java.lang.reflect.Field field)
根据一个Field生成 Attribute 对象。
|
static <T,F> Attribute<T,F> |
create(java.lang.reflect.Method getter,
java.lang.reflect.Method setter)
根据一个getter和setter方法生成 Attribute 对象。
|
static <T,F> Attribute<T,F> |
create(java.lang.String fieldalias,
java.lang.reflect.Field field)
根据一个Field和field的别名生成 Attribute 对象。
|
static <T> Attribute<T,?>[] |
createGetters(java.lang.Class<T> clazz)
根据Class生成getter方法对应的 Attribute 对象数组。
|
static <T> Attribute<T,?>[] |
createSetters(java.lang.Class<T> clazz)
根据Class生成setter方法对应的 Attribute 对象数组。
|
java.lang.Class<T> |
declaringClass()
返回字段依附的类名
|
java.lang.String |
field()
返回字段名
|
F |
get(T obj)
获取指定对象的该字段的值
|
void |
set(T obj,
F value)
给指定对象的该字段赋值
|
java.lang.Class<? extends F> |
type()
返回字段的数据类型
|
java.lang.Class<? extends F> type()
java.lang.Class<T> declaringClass()
java.lang.String field()
static <T,F> Attribute<T,F> create(java.lang.reflect.Field field)
T - 依附类的类型F - 字段类型field - 字段,如果该字段不存在则抛异常static <T,F> Attribute<T,F> create(java.lang.String fieldalias, java.lang.reflect.Field field)
T - 依附类的类型F - 字段类型fieldalias - 别名field - 字段,如果该字段不存在则抛异常static <T,F> Attribute<T,F> create(java.lang.Class<T> clazz, java.lang.String fieldname)
T - 依附类的类型F - 字段类型clazz - 指定依附的类fieldname - 字段名,如果该字段不存在则抛异常static <T,F> Attribute<T,F> create(java.lang.Class<T> clazz, java.lang.reflect.Field field)
T - 依附类的类型F - 字段类型clazz - 指定依附的类field - 字段,如果该字段不存在则抛异常static <T,F> Attribute<T,F> create(java.lang.Class<T> clazz, java.lang.String fieldalias, java.lang.reflect.Field field)
T - 依附类的类型F - 字段类型clazz - 指定依附的类fieldalias - 字段别名field - 字段,如果该字段不存在则抛异常static <T,F> Attribute<T,F> create(java.lang.reflect.Method getter, java.lang.reflect.Method setter)
T - 依附类的类型F - 字段类型getter - getter方法setter - setter方法static <T,F> Attribute<T,F> create(java.lang.Class<T> clazz, java.lang.reflect.Method getter, java.lang.reflect.Method setter)
T - 依附类的类型F - 字段类型clazz - 指定依附的类getter - getter方法setter - setter方法static <T> Attribute<T,?>[] create(java.lang.Class<T> clazz)
T - 依附类的类型clazz - 指定依附的类static <T> Attribute<T,?>[] createGetters(java.lang.Class<T> clazz)
T - 依附类的类型clazz - 指定依附的类static <T> Attribute<T,?>[] createSetters(java.lang.Class<T> clazz)
T - 依附类的类型clazz - 指定依附的类static <T,F> Attribute<T,F> create(java.lang.Class<T> clazz, java.lang.String fieldalias, java.lang.reflect.Method getter, java.lang.reflect.Method setter)
T - 依附类的类型F - 字段类型clazz - 指定依附的类fieldalias - 字段别名getter - getter方法setter - setter方法static <T,F> Attribute<T,F> create(java.lang.Class<T> clazz, java.lang.String fieldalias, java.lang.reflect.Field field, java.lang.reflect.Method getter, java.lang.reflect.Method setter)
T - 依附类的类型F - 字段类型clazz - 指定依附的类fieldalias - 字段别名field - 字段getter - getter方法setter - setter方法static <T,F> Attribute<T,F> create(java.lang.Class<T> clazz, java.lang.String fieldalias, java.lang.Class<F> fieldtype)
T - 依附类的类型F - 字段类型clazz - 指定依附的类fieldalias - 字段别名fieldtype - 字段的类static <T,F> Attribute<T,F> create(java.lang.Class<T> clazz, java.lang.String fieldalias, java.lang.Class<F> fieldtype, java.lang.reflect.Field field, java.lang.reflect.Method getter, java.lang.reflect.Method setter)
T - 依附类的类型F - 字段类型clazz - 指定依附的类fieldalias - 字段别名fieldtype - 字段类型field - 字段getter - getter方法setter - setter方法static <T,F> Attribute<T,F> create(java.lang.Class<T> clazz, java.lang.String fieldname, java.lang.Class<F> fieldtype, java.util.function.Function<T,F> getter, java.util.function.BiConsumer<T,F> setter)
T - 依附类的类型F - 字段类型clazz - 指定依附的类fieldname - 字段名fieldtype - 字段类型getter - getter方法setter - setter方法