java反射

★ 每一个对象运行时都有一个对应的Class对象,Class(查API)的获取有三种方式:

① 已有对象,调用对象的getClass方法(Object类中的getClass方法)

② 类型.class

③ 不知道对象,只有对象的全限名字符串Class.forName(String className)

★ Class重点掌握方法:

Class.forName("org.wdl.bean.User"):根据全限名获得Class对象

newInstance():通过Class创建实例,相当于调用无参数构造器创建实例

public static void main(String[] args)throws Exception {
        /**
         * 反射介绍:
         *      java反射机制是在运行状态中
         *      对于任意一个类,都能知道该类的所有属性和方法
         *      对于任意一个对象,都能调用他的任意的一个方法和属性
         *      这种动态获取的信息以及动态调用对象的方法的功能称之为java语言的反射机制
         *
         *      想解剖一个类,必须要获取到该类的字节码文件class文件,
         *      二解剖类中的各个成分使用的就是Class类的方法
         *
         *      其实反射就是把java类中的各个成分映射成为一个个的java对象
         */
        //获取class对象的三种方式
        Class<?> clazz1 = Person.class;
        //使用对象的权限定名 ->idea 复制类路径:右键Copy Reference
        Class<?> clazz2 = Class.forName("Person");
        //
        //已有对象,调用对象的getClass方法
        Person person = new Person();
        Class<?> clazz3 = person.getClass();
        System.out.println(clazz1);
        System.out.println(clazz2);
        System.out.println(clazz3);
        /**
         * 输出:
         * class Person
         * class Person
         * class Person
         */
        System.out.println(clazz1==clazz2);//true 表示他们是同一个对象的引用
        Object person1 = clazz1.newInstance();
        Object person2 = clazz2.newInstance();
        Object person3 = clazz3.newInstance();
        System.out.println(person1==person2);//false 表示创建不同的对象的实例
    }

 

posted @ 2018-12-22 16:17  huanghaunghui  阅读(163)  评论(0编辑  收藏  举报