Class类的使用
除了基本的数据类型、静态成员不是对象,万事万物皆对象,而基本的数据类型可封装为包装类。
类是java.lang.Class类的实例对象,任何一个类都是Class的实例对象。
类的实例化表示方法:
c1、c2、c3表示Food类的类类型(class type)
一个类只可能是Class类的一个实例对象
通过类类型实例化对象
基本数据类型、包装类、void关键字等都存在类类型
动态加载类
编译时刻加载类是静态加载类,运行时刻加载类是动态加载类
- new创建对象:是静态加载类,在编译时刻就需要加载所有的可能使用到的类。有一个类有问题(如不存在),都不能通过编译,会报错。
Class.forName("类的全称");
不仅代表了类的类型,还代表了动态加载类。Class.forName()
通过动态加载类,用到一个类时,才进行加载。动态加载类,编译时不会出错,只有运行时可能出错
|
|
|
|
功能性的类尽量使用动态加载,并对新添的类实现功能性接口(标准),这样就不用重新编译
获取类的信息
通过反射可以获取类的方法、属性、构造函数、包等信息
|
|
方法的反射
通过方法的反射调用方法
|
|
通过反射了解集合泛型的本质
Java中集合的泛型是防止错误输入的,只在编译阶段有效,如果绕开编译就无效了
|
|