2-1-2-05反射概述

反射:设计框架的灵魂

  框架:半成品软件,可以在框架的基础上进行开发,可以简化代码编写

  反射:将类的各个组成部分封装为其他对象,这就是反射机制

  好处:

    1.可以在程序运行的过程中操作这些对象

    2.可以解耦,提高程序的可扩展性

String str = new String();//实例化对象
        //经过反射机制,将String对象抽取出来封装到Class类对象中的Method[]中,当调用方法时就显示Method[]中的所有方法,再选择调用哪个方法
        str.length();

    }

获取class对象的方式:

  1.Class.forName("全类名"):将字节码文件加载进内存,返回Class文件对象(在Source源代码阶段的调用)

  2.类名.class:通过类名的属性class获取(在Class类对象阶段的调用)

  3.对象名.getClass():getClass()方法是Object类中的方法(在Runtime运行阶段的调用)

//1.Class.forName("全类名");
        Class aClass = Class.forName("reflect.ReflectEntity2");
        System.out.println(aClass);

        //2.类名.Class;
        Class reflectEntity2Class = ReflectEntity2.class;
        System.out.println(reflectEntity2Class);

        //3.对象.getClass();
        ReflectEntity2 reflectEntity2 = new ReflectEntity2();
        Class aClass1 = reflectEntity2.getClass();
        System.out.println(aClass1);

        //比较三者地址值是否相同
        System.out.println(aClass==reflectEntity2Class);//true
        System.out.println(aClass==aClass1);//true
        System.out.println(reflectEntity2Class==aClass1);//true

输出结果:

 结论:

  同一个字节码文件(*.class)在一次程序运行的过程中只会被加载一次,不论哪种方式获取的对象都是同一个

原文地址:https://www.cnblogs.com/KeepCalmAndNeverSayNever/p/13340454.html