Field一.了解field
java.lang.reflect
类 Field
java.lang.Object java.lang.reflect.AccessibleObject java.lang.reflect.Field
-
所有已实现的接口:
- AnnotatedElement, Member
public final class Field extends AccessibleObject implements Member
Field
提供有关类或接口的单个字段的信息,以及对它的动态访问权限。反射的字段可能是一个类(静态)字段或实例字段。
Array
允许在执行 get 或 set 访问操作期间进行扩展转换,但如果将发生收缩转换,则抛出一个IllegalArgumentException
。
-
另请参见:
-
Member
,Class
,Class.getFields()
,Class.getField(String)
,Class.getDeclaredFields()
,Class.getDeclaredField(String)
字段摘要 |
---|
从接口 java.lang.reflect.Member 继承的字段 |
---|
DECLARED, PUBLIC |
方法摘要 | ||
---|---|---|
boolean | equals(Object obj) 将此 Field 与指定对象比较。 | |
Object | get(Object obj) 返回指定对象上此 Field 表示的字段的值。 | |
| getAnnotation(Class<T> annotationClass) 如果存在该元素的指定类型的注释,则返回这些注释,否则返回 null。 | |
boolean | getBoolean(Object obj) 获得一个静态或实例 boolean 字段的值。 | |
byte | getByte(Object obj) 获得一个静态或实例 byte 字段的值。 | |
char | getChar(Object obj) 获得 char 类型或另一个通过扩展转换可以转换为 char 类型的基本类型的静态或实例字段的值。 | |
Annotation[] | getDeclaredAnnotations() 返回直接存在于此元素上的所有注释。 | |
Class<?> | getDeclaringClass() 返回表示类或接口的 Class 对象,该类或接口声明由此 Field 对象表示的字段。 | |
double | getDouble(Object obj) 获得 double 类型或另一个通过扩展转换可以转换为 double 类型的基本类型的静态或实例字段的值。 | |
float | getFloat(Object obj) 获得 float 类型或另一个通过扩展转换可以转换为 float 类型的基本类型的静态或实例字段的值。 | |
Type | getGenericType() 返回一个 Type 对象,它表示此 Field 对象所表示字段的声明类型。 | |
int | getInt(Object obj) 获得 int 类型或另一个通过扩展转换可以转换为 int 类型的基本类型的静态或实例字段的值。 | |
long | getLong(Object obj) 获得 long 类型或另一个通过扩展转换可以转换为 long 类型的基本类型的静态或实例字段的值。 | |
int | getModifiers() 以整数形式返回由此 Field 对象表示的字段的 Java 语言修饰符。 | |
String | getName() 返回此 Field 对象表示的字段的名称。 | |
short | getShort(Object obj) 获得 short 类型或另一个通过扩展转换可以转换为 short 类型的基本类型的静态或实例字段的值。 | |
Class<?> | getType() 返回一个 Class 对象,它标识了此 Field 对象所表示字段的声明类型。 | |
int | hashCode() 返回该 Field 的哈希码。 | |
boolean | isEnumConstant() 如果此字段表示枚举类型的元素,则返回 true;否则返回 false。 | |
boolean | isSynthetic() 如果此字段是复合字段,则返回 true;否则返回 false。 | |
void | set(Object obj, Object value) 将指定对象变量上此 Field 对象表示的字段设置为指定的新值。 | |
void | setBoolean(Object obj, boolean z) 将字段的值设置为指定对象上的一个 boolean 值。 | |
void | setByte(Object obj, byte b) 将字段的值设置为指定对象上的一个 byte 值。 | |
void | setChar(Object obj, char c) 将字段的值设置为指定对象上的一个 char 值。 | |
void | setDouble(Object obj, double d) 将字段的值设置为指定对象上的一个 double 值。 | |
void | setFloat(Object obj, float f) 将字段的值设置为指定对象上的一个 float 值。 | |
void | setInt(Object obj, int i) 将字段的值设置为指定对象上的一个 int 值。 | |
void | setLong(Object obj, long l) 将字段的值设置为指定对象上的一个 long 值。 | |
void | setShort(Object obj, short s) 将字段的值设置为指定对象上的一个 short 值。 | |
String | toGenericString() 返回一个描述此 Field (包括其一般类型)的字符串。 | |
String | toString() 返回一个描述此 Field 的字符串。 |
从类 java.lang.reflect.AccessibleObject 继承的方法 |
---|
getAnnotations, isAccessible, isAnnotationPresent, setAccessible, setAccessible |
二.使用:
1.拿到类的属性和设置属性值。
Class clazz=Class.forName("com.testBean.User");得到类对象
Object bean=clazz..newInstance();//实例化该类。
a)//解析属性信息
Field[] fs=clazz.getDeclaredFields();
for(int i = 0 ; i < fs.length; i++){
Field f = fs[i];
f.setAccessible(true); //设置些属性是可以访问的
Object val = f.get(bean);//得到此属性的值
System.out.println("name:"+f.getName()+", value = "+val);
f.set(bean,"12") ; //给属性设值
b)//解析方法信息
Method[] methodlist=cla.getDeclaredMethods();
c)得到指定的属性,并给该属性设置值。
Field field = clazz.getDeclaredField("userName");
field.setAccessible(true);
field.set(bean, "张三");
未完待续....