美文网首页
Java反射的实现

Java反射的实现

作者: 沐络 | 来源:发表于2019-08-19 13:34 被阅读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));
        }
    }
    

    相关文章

      网友评论

          本文标题:Java反射的实现

          本文链接:https://www.haomeiwen.com/subject/zbnjsctx.html