📅  最后修改于: 2023-12-03 15:32:02.780000             🧑  作者: Mango
在Java中,反射是指在运行时(程序运行过程中)动态获取类的信息并操作类的方法、属性、构造方法等。
Java是一门静态类型语言,即在编译时需要明确声明变量类型。而反射机制提供了以下好处:
反射可以通过以下步骤来执行:
类加载器可以在程序运行时动态加载并获取指定类的Class对象。通过Class对象可以获取类的属性、方法、构造方法等信息。
Class clazz = Class.forName("com.example.MyClass");
使用Class对象可以创建一个类的实例。可以通过反射调用类的默认构造方法或有参构造方法来创建对象。
MyClass obj = (MyClass)clazz.newInstance();
可以使用反射来获得一个类的字段。可以在程序运行时改变字段的值,或获取字段的值并对其进行操作。
Field field = clazz.getDeclaredField("fieldName");
field.setAccessible(true); //必须设置访问权限,否则会报错
field.set(obj, "fieldValue");
System.out.println(field.get(obj));
通过反射也可以调用一个类的方法。可以在程序运行时动态地调用类的方法,而不需要在编译时就确定调用哪些方法。
Method method = clazz.getDeclaredMethod("methodName", parameterTypes);
method.setAccessible(true); //必须设置访问权限,否则会报错
method.invoke(obj, args);