1.反射:
什么是反射
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性、方法、构造方法等信息, 这种动态获取类的信息的行为就是java的反射机制。
反射机制的作用:
通过java语言中的反射机制可以操作字节码文件(可以读和修改字节码文件。) 通过反射机制可以操作代码片段。(class文件。)
2.反射机制相关的重要的类有哪些?
类 | 含义 |
---|---|
java.lang.Class | 代表整个字节码。代表一个类型,代表整个类。 |
java.lang.reflect.Method | 代表字节码中的方法字节码。代表类中的方法。 |
java.lang.reflect.Constructor | 代表字节码中的构造方法字节码。代表类中的构造方法。 |
java.lang.reflect.Field | 代表字节码中的属性字节码。代表类中的成员变量(静态变量+实例变量)。 |
注:必须先获得Class才能获取 Method、Constructor、Field。
3.获取class类
作用:1.加载指定类到内存中的方法区 2.获取class对象
方法一:(Class.forname)
Class clazz= Class.forName("com.fs.ref.Student");
方法二:(任何类型.class)
Class clazz = Student.class;
方法三:(对象.getclass())
Student student = new Student(); Class clazz3 = student.getClass();
4.获取构造方法Constructor
-
1.Constructor<T> getConstructor(类<?>... parameterTypes) 返回一个 Constructor对象,该对象反映 Constructor对象表示的类的指定的公共 类函数。 4.2.Constructor<?>[] getConstructors() 返回包含一个数组 Constructor对象反射由此表示的类的所有公共构造 类对象。
-
3.Constructor<T> getDeclaredConstructor(类<?>... parameterTypes) 返回一个 Constructor对象,该对象反映 Constructor对象表示的类或接口的指定 类函数。
-
4.Constructor<?>[] getDeclaredConstructors() 返回一个反映 Constructor对象表示的类声明的所有 Constructor对象的数组类 。
-
-
5.获取字段属性Filed
-
1.Field getField(String name) 返回一个 Field对象,它反映此表示的类或接口的指定公共成员字段 类对象。
-
2.Field[] getFields() 返回包含一个数组 Field对象反射由此表示的类或接口的所有可访问的公共字段 类对象。
-
3.Field getDeclaredField(String name) 返回一个 Field对象,它反映此表示的类或接口的指定已声明字段 类对象。
-
4.Field[] getDeclaredFields() 返回的数组 Field对象反映此表示的类或接口声明的所有字段 类对象。
-
-
-
6.Filed方法:
Object get(Object obj) | 返回该所表示的字段的值 Field ,指定的对象上。 |
---|---|
void set(Object obj, Object value) | 将指定对象参数上的此 Field对象表示的字段设置为指定的新值。 |
#####
7.获取成员方法Method
7.1.Method getMethod(String name, 类<?>... parameterTypes) 返回一个 方法对象,它反映此表示的类或接口的指定公共成员方法 类对象。
-
2.Method[] getMethods() 返回包含一个数组 方法对象反射由此表示的类或接口的所有公共方法 类对象,包括那些由类或接口和那些从超类和超接口继承的声明。
-
3.Method getDeclaredMethod(String name, 类<?>... parameterTypes) 返回一个 方法对象,它反映此表示的类或接口的指定声明的方法 类对象。
-
4.Method[] getDeclaredMethods() 返回包含一个数组 方法对象反射的类或接口的所有声明的方法,通过此表示 类对象,包括公共,保护,默认(包)访问和私有方法,但不包括继承的方法。
-
-