一、Class类的使用
在面向对象的世界里,一切皆是对象(静态成员,普通数据类型不是对象)
我们的每一个类也是对象,是java.lang.Class类的实例对象
@Java反射机制---动态加载类
1.静态加载类,是编译时刻加载;动态加载类,是运行时刻加载。
2.new创建对象:是静态加载类,在编译时刻就需要加载所有的【可能使用到的类】。有一个类有问题(如不存在),都不能通过编译,会报错。
3.Class.forName()通过动态加载类,可以用到一个类时,才进行加载。
【功能性的类尽量使用动态加载,并对新添的类实现功能性接口(标准),这样就不用重新编
需要统一标准(interface)
其他的类要遵循这个标准(implements
Class.forName("类的全称");
public class DemoClass01 {
public static void main(String[] args) {
People people = new People();
// 获取People的类名,三种方式
// 第一种
Class c1= People.class;
System.out.println(c1);
// 第二种
Class c2= people.getClass();
System.out.println(c2);
System.out.println(c1 == c2);
// 第三种
Class c3 = null;
try {
c3 = Class.forName("com.kjgym.practice.People");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
System.out.println(c2 == c3);
// 通过类的类类型来创建该类的类对象实例
try {
People p2 = (People) c1.newInstance();
p2.print();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
class People{
void print(){
System.out.println("wolaile");
}
}