后端 | Java | 反射-全球时讯

来源:哔哩哔哩时间:2023-06-23 11:57:09

笔记来源:Java入门基础视频教程,java零基础自学就选黑马程序员Java入门教程

一、反射(Reflection)

反射:加载类,并允许以编程的方式解剖类中的各种成分(成员变量、方法、构造器等)。


(资料图片仅供参考)

获取类: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的框架,基本上,主流的框架都会基于反射设计出一些通用的功能。

关键词:

责任编辑:FD31
上一篇:少年骑摩托狂飙 行人惨被撞飞
下一篇:最后一页