反射是经常会碰到的一个问题,也是重点中的难点吧.有些确实记得不是很清楚,所以,把它梳理了一遍,也希望能对后来人有用:
一.反射就是使用Class对象,去获取类内部的构造方法,
成员属性,成员方法,并且可以去调用;
二.通过Class获取构造方法:
public Constructor[] getConstructors():获取所有的公有构造方法
public Constructor[] getDeclaredConstructors():获取所有构造方法,包括公有、私有、受保护、默认
public Constructor<T> getConstructor(Class<?>... parameterTypes):获取单个的公有的构造方法;
public Constructor getDeclaredConstructor(Class<?>... parameterTypes):获取单个的构造方法,包括私有的
Constructor-->newInstance():调用构造方法;
三.通过Class获取成员属性:
1.Field[] getFields():获取所有的公共成员属性;
2.Field[] getDeclaredFields():获取所有的成员属性,包括私有,默认,受保护
3.Field getFiled(String name):获取某个公有的成员属性;name:字段名称
4.Field getDeclaredFiled():获取某个成员属性。包括私有,默认,受保护
为属性赋值:
set(Object obj,Object value):
获取属性的值:
Object get(Object obj):
四.通过Class获取成员方法:
1.Method[] getMethods():获取所有公有的成员方法;
2.Method[] getDeclaredMethods():获取所有的成员方法,包括私有,默认,受保护;
3.Method getMethod():获取某个公有的方法;
4.Method getDeclaredMethod():获取某个方法,包括私有,默认,受保护
调用方法:
Method --> invoke(Object obj,Object param):
|
|