反射机制
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"); } } |