Java中的反射,是利用JVM将类加载到内存中。并通过字节码文件获取该类的信息,如属性,方法,构造函数等信息。可以利用这些信息在程序中生成对象
反射对象
public class People {
protected People(){
}
protected People(String name){
this.name = name;
}
String name ="sss";
public static void m(){}
}
反射代码
package Reflection;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class Main {
public static void main(String[] args) {
try {
//1。获取字节码文件
Class peopleClass1 = Class.forName("Reflection.People");
Class peopleClass2 = ClassLoader.getSystemClassLoader().loadClass("Reflection.People");
//2.获取对象
//People p1 = (People) peopleClass.newInstance();
Constructor peopleClassConstructor = peopleClass1.getDeclaredConstructor(String.class);
People p2 =(People) peopleClassConstructor.newInstance("bbb");
//3.获取方法
Method m1 = peopleClass1.getDeclaredMethod("m");
//4.获取属性
Field f = peopleClass1.getDeclaredField("name");
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}