Java反射机制
9.
8.
7.
6.
通过反射,可以在运行的时候,了解一个类的内部。
5.
可变参数 的方法 (可以 传零个,或多个)
4.
反射:
站在ClassLoader的角度来说,每个被load进来的class都是一个class对象。(类里的方法、参数、属性也都是)
java.lang.reflect
属性 Field
方法 Method
- 反射:运行期间,动态地加载一个类,动态地new 一个对象,动态地调用类的方法。
- (在配置文件里)
- Class c = Class.forName(str): 名字叫str的类,load进来。返回一个Class对象。
- Object o = c.newInstance();
- Method[] methods = c.getMethods();
- 如何调用str类里的方法?
- getName
- invoke(o)
3.
getParent()是指:指向内存里的 parent的 class loader 对象。
bootstrap, ext class loader , app class loader, otherw这些 对象 之间,
可以认为,对象内里有一个引用,指向上一层的class loader。
加载的过程:加载的时候,先找它的parent class loader,看parent有没有加载,parent加载了,它就不会再加载。
安全性好:
自己写的String.class永远没机会执行。
2.
1. JDK里的class loader不止一个。
2. bootstrap class loader(是对象)。最顶层的。用c/c++或汇编写的。无名。
load String的核心类。
其它class loader是java写的。
2.5. extension扩展类的loader。jre/lib/ext/*
3. SystemClassLoader就是application class loader
4. other
5.过程:bootstrap class loader把 其它class loader载入。然后,其它的class loader 再把需要的 类 载入进来。
1.
1. 需要的时候加载
2. static语句块在加载后执行一次。 static { xxx }
3. dynamic语句块 { xxx } 用的少。无条件的加载在每个constructor的前面。
4. java -verbose:class ***

浙公网安备 33010602011771号