ClassLoader类加载机制(需要的时候加载需要的类):
详细的输出:
指定虚拟机参数:-verbose:class
static语句块:加载class后只执行一次
dynamic语句块:相当于构造方法中加入,每次new都会执行
JDK内置ClassLoader关系图:
bootstrap class loader
extension class loader
application class loader
other class loaders
ClassLoader的层次关系有助于提高安全性,防止恶意代码
Java反射机制(java.lang.reflect.*):
通过api动态监测类的内部结构,并调用相关方法,比如把类名写在配置文件里,然后new这个类,并可以调用这个类的方法,使用如下:
String str = "T";
class c = Class.forName(str);
Test t = c.newInstance();
Method[] ms = c.getMethods();
for(Method m : ms) {
if(m.getName().equals("toString")) {
m.invoke(t);
}