编程javaJava 反射
nodaoli
可以理解为通过反射把一个类的属性,方法,拆分出来,作为一个对象来使用
例如拆分成
- Class对象:代表类的类型信息,可以用来获取类的静态属性,创建对象实例等。
- Field对象:代表类中的字段(成员变量),可以用来获取或设置字段的值。
- Method对象:代表类中的方法,可以用来调用方法。
- Constructor对象:代表类的构造器,可以用来创建对象实例。
假设您有一个名为Person的类,其中有一个名为name的字段和一个名为sayHello的方法。使用反射,您可以这样做:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| import java.lang.reflect.Field; import java.lang.reflect.Method;
public class ReflectionExample { public static void main(String[] args) { try { Class<?> personClass = Class.forName("Person");
Object personInstance = personClass.getDeclaredConstructor().newInstance();
Field nameField = personClass.getDeclaredField("name");
nameField.setAccessible(true); nameField.set(personInstance, "Alice");
Method sayHelloMethod = personClass.getDeclaredMethod("sayHello");
sayHelloMethod.invoke(personInstance);
} catch (Exception e) { e.printStackTrace(); } } }
class Person { private String name;
public Person() { }
public void sayHello() { System.out.println("Hello, my name is " + name); } }
|