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.拿到类的属性和设置属性值。
比如 有一个User类 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, "张三");
未完待续.
分享到:
相关推荐
反射之 操作 Field 成员变量类以及反射授权.md
本文档时关于Java的反射的一个组件Field的详细描述
附件是自己总结在编程过程中所遇到的关于反射的内容,主要是详细的描述了关于Constructor、Mehod、Field和Class类的内容
你可以看到这个类对属性的存取方法(getter and setter method)使用了标准JavaBean命名约定,同时...为了通过反射机制(Reflection)来实例化这个类的对象,我们需要提供一个无参的构造器(no-argument constructor)。
java.lang.reflect.Constructor; java.lang.reflect.Field; java.lang.reflect.Method; java.lang.reflect.Modifier;
java反射的用例代码 // //获取类对象的属性 // Field field = clazz.getDeclaredField("name"); // System.out.println(field); // // Method method = clazz.getDeclaredMethod("getName", new Class[]{}); // ...
java反射机制基础学习。Class、Method、Field
java反射之后类属性的顺序默认是不变的,利用注解可改变反射之后类属性顺序。运行TestMain类即可看到效果
Java提供了一套机制来动态执行方法和构造方法,以及数组操作等,这套机制就叫——反射。反射机制是如今很多流行框架的实现基础,其中包括Spring、Hibernate等。原理性的问题不是本文的重点,接下来让我们在实例中...
使用JAVA反射机制动态调用 计算器对象的加法,减法函数。 使用JAVA反射机制修改一个学生对象 的私有数据成员(不允许调用setters) 使用的类有Class, Method, Field
- 获取类中的变量(Field) - 获取类中的方法(Method) - 获取类的构造器(Constructor) - 获取注解 - 通过反射调用方法 - 反射的应用场景 - Spring 的 IOC 容器 - 反射 + 抽象工厂模式 - JDBC 加载...
1、项目位置2、先编写 properties文件,前面为xml文件字段,后面为实体类java字段#explain \u524D\u9762\u662Fxml\u
获取类中的变量(Field) 获取类中的方法(Method) 获取类的构造器(Constructor) 获取注解 通过反射调用方法 反射的应用场景 Spring 的 IOC 容器 反射 + 抽象工厂模式 JDBC 加载数据库驱动类 反射的优势及缺陷 ...
代码主要实现了Java反射应用实例, 包含利用反射方法创建对象(使用默认构造函数和自定义构造函数),访问对应对象的方法(包括带参数的和不带参数的),访问对应对象的域(Field). 从这里可以看到代码的详细解说:...
主要的类和接口包括Class、Method、Field、Constructor等。 以下是Java反射技术的一些常见应用: 获取类的信息:通过反射可以获取类的名称、父类、接口、方法、字段等信息。 实例化对象:通过反射可以实例化一个...
本段代码是在学习了反射相关知识后,结合实际开发经验,以一个简单demo讲述开发中是如何利用发射进行开发。 主要包含以下三个知识点:1.以tomcat为例,讲述其基于反射...字段(field)4.获取class的方法(Method)。
理解 Class 类 理解 Java 的类加载机制 学会使用 ClassLoader 进行类加载 理解反射的机制 掌握 Constructor、Method、Field 类的用法 理解并掌握动态代理
java反射(reflect)
3.2 反射中类加载器、构造器、Method、Field的进阶操作 3.2.1 对类加载器的操作: 3.2.2 对构造器的操作: 3.2.3 对Method、Field的操作: 3.2.4 对Field的操作: 四 反射进阶之深入剖析 4.1 Java反射机制的起源