反射Class

作者: shineegirl | 来源:发表于2016-12-09 16:33 被阅读11次

    class类的使用

    方法的反射

    成员变量的反射

    构造函数的反射

    Java类加载机制

    反射帮我们做一些程序运行时刻的事情。

    静态的成员,普通数据类型不是对象。

    类是class的对象。

    属性名称规范:如果第一个首字母是大写,则第二个字母也应该是大写,如果是第一个字母是小写则没有问题(如果不按规范来,用到Java反射的时候可能会找不到对应的set/get方法)

    万物皆对象,一个类可以实例化一个对象,一个类也是Class的一个对象,c为Person的类类型(class type),表示Person是一个对象,Class的对象,任何一个类都是Class的实例对象,有三种表示方式,如下所示:

    //事例告诉我们任何一个类都有一个静态成员属性

    Class c= Person.class

    1.所有类的对象都是class的实例。

    获取class对象的三种方法

    《1》 Class person = Class.forName("Person");//常用方法

    《2》

     

    Class

     

    person = new Person.getClass();

    《3》

     

    Class 

    person = Person.class

    一个类只可能是Class类的一个实例对象。 以上person是相同的。

    可以通过类的类类型创建类的对象实例。(动态加载一个类,编译时刻加载类是静态加载类,运行时刻加载类是动态加载类)

    Person person = (Person)person.newInstance(); //必须要有无参的构造方法

    类是class的一个实例,基本的数据类型也是(int,String,void)

    //new 创建对象是静态加载类,在编译时刻就需要加载所有的可能使用到的类。

    c1.getName();

    person.getDeclaredFields()//获得自己声明的一些属性,不包括父类的

    person.

    getFields()//可以获得自己和父类的一些public方法

    Person person = (Person)person.newInstance(); //必须要有无参的构造方法

    Method类,方法的对象,一个成员方法就是一个Method对象,getMethods()方法获取的是所有public的函数,包括父类的,getDeckaredMethods()获取的是自己声明的,不问访问类型。

    2 通过class获取对象

    Class.forName("Person").getConstructors();Object person = con[0].newInstance("zld",18);获取类实现的所有接口类Class.forName("Person").getInterfaces();

    取得其他类中的父类

     demo=Class.forName("包名.Person");  demo.getSuperClass();

    用反射可能证明泛型是伪泛型,泛型只在编译时起作用,防止错误的输入。

    相关文章

      网友评论

        本文标题:反射Class

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