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.
getFields()//可以获得自己和父类的一些public方法
Person person = (Person)person.newInstance(); //必须要有无参的构造方法
Method类,方法的对象,一个成员方法就是一个Method对象,getMethods()方法获取的是所有public的函数,包括父类的,getDeckaredMethods()获取的是自己声明的,不问访问类型。
2 通过class获取对象
取得其他类中的父类
demo=Class.forName(
"包名.Person"
);
demo.getSuperClass();