反射机制
ClassLoader
的类加载机制
并非一次性加载
需要的时候加载(运行期间动态加载)
Static
语句块在加载后执行一次
Dynamic
语句块每次
new
新的对象都会执行
等同于构造方法中语句
用的较少
JDK
中内置的
ClassLoader
Bootstrap class loader
Extension class loader
Application class loader
Other class loader
反射中的例子
package com.test.reflection; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class Reflection_Test { public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { String str ="com.test.reflection.T";//写全类名 //获取类的名字 Class c =Class.forName(str); //相当于给类new 出来 Object o =c.newInstance(); //或许类中的所有方法 Method [] method =c.getMethods(); for (Method m : method) { if(m.equals("mm")){ m.invoke(o); } } } } class T{ static{ System.out.println("this is my t class !"); } public T(){ System.out.println("his constructed"); } public void mm(){ System.out.println("i am here .....method"); } } |