Java反射的实现

2019-08-19  本文已影响0人  沐络

一.反射的理解

反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。总结说:反射就是把java类中的各种成分映射成一个个的Java对象,并且可以进行操作。
学习反射之前,先了解一下Java类的执行过程如下图:


加载过程.jpg

Java的反射就是利用上面第二步加载到jvm中的.class文件来进行操作的。.class文件中包含java类的所有信息,当你不知道某个类具体信息时,可以使用反射获取class,然后进行各种操作。

二.使用反射时获取Class对象的方式

1)使用getClass()

    Simple s=new Simple();
    Class c = s.getClass();
  1. 类名.class 的方式得到,该方法最为安全可靠,程序性能更高
Class classz=Simple.class;

3)通过 Class 对象的 forName() 静态方法来获取,用的最多

Class c= Class.forName("com.tst.Simple");

三反射的简单实现

public class Simple{

    private int value;

    public int getValue() {
        return value;
    }

    public void setValue(int value) {
        this.value= value;
    }

    public static void main(String[] args) throws Exception{
        //正常的调用
        Simple s= new Simple();
        s.setPrice(5);
        System.out.println("Simple Value:" + s.getPrice());
        //使用反射调用
        Class clz = Simple.class;
        Method m= clz.getMethod("setValue", int.class);
        Constructor simpleConstructor = clz.getConstructor();
        Object simpleObj = simpleConstructor .newInstance();
        m.invoke(simpleObj , 14);
        Method m2= clz.getMethod("getValue");
        System.out.println("Simple value:" + m2.invoke(simpleObj));
    }
}
上一篇 下一篇

猜你喜欢

热点阅读