首页 > 代码库 > 反射获取Class对象的三种方式

反射获取Class对象的三种方式

import cn.qujianlei.domain.Person;public class ReflectDemo {    public static void main(String[] args) throws ClassNotFoundException {        /*         *          * 反射技术:动态的获取类以及类中的成员,并可以调用该类的成员。         * 以前有什么类就new什么对象。         * 现在没有类,给什么类就new什么对象。         *          *          * 反射技术的出现提高了程序的扩展性         * 反射技术中最重要的一点:先获取到那个类。         * 如何获取类呢?         *          * 无论new什么对象,都需要先获取字节码文件         * 如何获取呢?发现java已对字节码文件进行了描述用Class类完成的         *          * 如何获取一个字节码文件的对象呢?         *          * 方式一:Object getClass()方法,发现在反射技术里,该方法不合适,反射技术中不明确具体类         *          * 方式二:所有的数据类型都由自己对应的class对象,表示方法很简单         * 每一个数据类型都由一个默认的静态属性。.class用该属性就可以获取到字节码文件对象         * 虽然不用对象调用,但还是要用具体的类调用静态属性。         *          * 方式三:在Class类中找到了forName方法,通过名称就可以获取对应的字节码文件对象         * 重点!!!!!         *          */        //        methodDemo_1();        //        methodDemo_2();                methodDemo_3();                    }        public static void methodDemo_3() throws ClassNotFoundException {                String className = "cn.qujianlei.domain.Person";                Class clazz = Class.forName(className);                System.out.println(clazz);            }    public static void methodDemo_2() {                Class clazz = Person.class;        Class clazz2 = Person.class;        System.out.println(clazz==clazz2);            }    //获取Class对象的方式一    public static void methodDemo_1(){                //调用getClass先有对象        Person p1 = new Person();        Class c1 = p1.getClass();                 Person p2 = new Person();        Class c2 = p2.getClass();                 System.out.println(c1==c2);                    }    }

 

public class Person {            private String name;    private int age;    public Person(String name, int age) {        super();        this.name = name;        this.age = age;    }        public Person() {        super();        System.out.println("person run");            }        public void show(){        System.out.println("person show run");    }        public static void staticShow(){        System.out.println("person static show run");    }        public void paramShow(String name,int age){        System.out.println("show:"+name+"---"+age);    }        }

 

反射获取Class对象的三种方式