笔记来源:Java入门基础视频教程,java零基础自学就选黑马程序员Java入门教程
反射:加载类,并允许以编程的方式解剖类中的各种成分(成员变量、方法、构造器等)。
(资料图片仅供参考)
获取类:Class对象
Class c1 = 类名.class;
调用Class提供的方法:public static Class forName(String package);
Object提供的方法:public Class getClass(); Class c3 = 对象.getClass();
获取类的构造器:Constructor对象
Constructor<?>[] getConstructors():获取全部构造器(只能获取public修饰的)。
Constructor<?>[] getDeclaredConstructors():获取全部构造器(只要存在就能拿到)。
Constructor<T> getConstructor(Class<?>... parameterTypes):获取某个构造器(只能获取public修饰的)。
Consructor<T> getDeclaredConstructor(Class<?>... parameterType):获取某个构造器(只要存在就能拿到)。
方法:
T newInstance(Object... initargs):调用此构造器对象表示的构造器,并传入参数,完成对象的初始化并返回。
public void setAccessible(boolean flag):设置为true,表示禁止检查访问控制(暴力反射)。
获取类的成员变量:Field对象
public Field[] getFields():获取类的全部成员变量(只能获取public修饰的)。
public Field[] getDeclaredFields():获取类的全部成员变量(只要存在就能拿到)。
public Field getField(String name):获取类的某个成员变量(只能获取public修饰的)。
public Field getDeclaredField(String name):获取类的某个成员变量(只要存在就能拿到)。
方法:
void set(Object obj, Object value):赋值。
Object get(Object obj):取值。
public void setAccessible(boolean flag):设置为true,表示禁止检查访问控制(暴力反射)。
获取类的成员方法:Method对象
Method[] getMethods():获取类的全部成员方法(只能获取public修饰的)。
Method[] getDeclaredMethods():获取类的全部成员方法(只要存在就能拿到)。
Method getMethod(String name, Class<?>... parameterTypes):获取类的某个成员方法(只能获取public修饰的)。
Method getDeclaredMethod(String name, Class<?>... parameterTypes):获取类的某个成员方法(只要存在就能拿到)。
方法:
public Object invoke(Object obj, Object... args):触发某个对象的方法执行。
public void setAccessible(boolean flag):设置为true,表示禁止检查访问控制(暴力反射)。
基本作用:可以得到一个类的全部成分然后操作。
可以破坏封装性。
最重要的作用:适合做Java的框架,基本上,主流的框架都会基于反射设计出一些通用的功能。
关键词: