什么是反射:
对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制
类对象的获取
1.加载类到方法区时获取
Class clazz= Class.forName("com.fs.ref.Student");
2.编译时获取
Class clazz = Student.class;
3.通过对象获取
Student student = new Student();
Class clazz3 = student.getClass();
获取公共的构造方法
-
-
Constructor<T>
getConstructor(类<?>... parameterTypes)
返回一个
Constructor
对象,该对象反映Constructor
对象表示的类的指定的公共类
函数。Constructor<?>[]
getConstructors()
返回包含一个数组
Constructor
对象反射由此表示的类的所有公共构造类
对象。
-
获取私有构造
-
-
Constructor<T>
getDeclaredConstructor(类<?>... parameterTypes)
返回一个
Constructor
对象,该对象反映Constructor
对象表示的类或接口的指定类
函数。Constructor<?>[]
getDeclaredConstructors()
返回一个反映
Constructor
对象表示的类声明的所有Constructor
对象的数组类
。
-
获取字段属性Filed
1.Field getField(String name)
返回一个 Field对象,它反映此表示的类或接口的指定公共成员字段 类对象。
2.Field[] getFields()
返回包含一个数组 Field对象反射由此表示的类或接口的所有可访问的公共字段 类对象。
3.Field getDeclaredField(String name)
返回一个 Field对象,它反映此表示的类或接口的指定已声明字段 类对象。
4.Field[] getDeclaredFields()
返回的数组 Field对象反映此表示的类或接口声明的所有字段 类对象。
字段方法:
Object get(Object obj)
返回该所表示的字段的值 Field ,指定的对象上。
void set(Object obj, Object value)
将指定对象参数上的此 Field对象表示的字段设置为指定的新值。
获取成员方法Method
1.Method getMethod(String name, 类<?>... parameterTypes)
返回一个 方法对象,它反映此表示的类或接口的指定公共成员方法 类对象。
2.Method[] getMethods()
返回包含一个数组 方法对象反射由此表示的类或接口的所有公共方法 类对象,包括那些由类或接口和那些从超类和超接口继承的声明。
3.Method getDeclaredMethod(String name, 类<?>... parameterTypes)
返回一个 方法对象,它反映此表示的类或接口的指定声明的方法 类对象。
4.Method[] getDeclaredMethods()
返回包含一个数组 方法对象反射的类或接口的所有声明的方法,通过此表示 类对象,包括公 共, 保护,默认(包)访问和私有方法,但不包括继承的方法。