版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)
Reflection(反射)
反射:在java中一个类在运行过程中,对于这个类的属性任意调用,对于这个类的对象可以任意调用任意调用方法,这种动态获取属性信息,和动态调用方法的行为被称为反射机制
1.四种类加载方式
延时加载(只有在被new对象时才会被加载)
Class c = 实体对象.class;
c.newInstance();
实体对象 et = new 实体对象();
Class c = et.getclass();
及时加载(会立刻打印静态块)
Class c = Class.forName("对象路径");
通过类加载器(系统加载器)获取(也属于延时加载)
ClassLoader loader = ClassLoader.getSystemClassLoader();
Class c = loader.loadClass("对象路径");
2.获取一个类的所有父类
Class c = 类.class;
while(c!=null){
c = c.getSuperclass();
}
3.基础与包装类
包装类
Class c1 = Integer.class;
c1.getName==java.lang,.Integer
基础类
Class c1 = int.class;
c1.getName==int
在jdk1.5版本之后
Class c3 = Integer.TYPE;
c3==int
知识点总结
加载机制分为1.向上委托 2.向下通知
1.向上委托:系统加载器不会马上加载,会向上委托,给扩展加载器与不会马上加载,会向上委托给引导加载器
1.向下通知:如果扩展加载器中有这个类型会直接加载,若没有通知ExtclassLoader加载,若ExtclassLoader
没有则会通知AppclassLoader加载,若AppclassLoader也没有则会报错