反射 获取字节码 给对象赋值

获取字节码的三种方法:

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

猜你喜欢

转载自blog.csdn.net/u010002184/article/details/88988268