获取字节码的三种方法:
1)Class clazz1 = Class.forName("全限定类名"); //通过静态方法forName,获取字节码文件对象。此时该类还处于源文件java文件阶段,并没有变为字节码.class文件。
2)Class clazz2 = Person.class; //在类被编译成.class文件时启动,直接获取到自己编译成的.class文件。
3)Class clazz3 = p.getClass(); //通过这个类的实例化获取这个类的字节码文件对象,在处于创建对象阶段启动此方法。
https://zhuanlan.zhihu.com/p/54949199
java使用反射给对象赋值:
类:
public class Test {
private String name;
public String getName() {
return name;
}
public void setName( String name) {
this.name= name;
}
}
方法1:
Test t = new Test();
Field f = t.getClass().getDeclaredField("name");
f.setAccessible(true);
f.set(t, "this is test1");
System.out.println(t.getName());
方法2:
Test t = new Test();
Method setName = t.getClass().getMethod("setName", String.class);
String s ="this is test2";
setName.invoke(t,s);
System.out.println(t.getName());
https://www.cnblogs.com/tyrone-vip/p/9957801.html
end