反射用法

上面讲了类加载机制,会将类放到一个池子里面。这时候如果我们想获取某个类,然后调用某个类的方法的话,可以使用反射。

import java.lang.reflect.Method;

public class TestClassLoader {
	public static void main(java.lang.String args[]) throws Exception{
		
		//类加载器
		System.out.println("启动类加载器--BOOTSTRAP ClassLoader 加载C:\\Program Files\\Java\\jre1.8.0_112\\lib\\rt.jar: "+String.class.getClassLoader());
		System.out.println("扩展类加载器--Extension ClassLoader 加载C:\\Program Files\\Java\\jre1.8.0_112\\lib\\ext下面的类 :"+com.sun.crypto.provider.DESKeyFactory.class.getClassLoader().getClass().getName());
		System.out.println("应用程序类加载器--Application ClassLoader 加载所有我们写的类"+ TestClassLoader.class.getClassLoader().getClass().getName());
		
		//类加载器的 组合拳
		ClassLoader classLoader = TestClassLoader.class.getClassLoader(); 
		while(classLoader!=null){
			System.out.println(classLoader.getClass().getName());
			classLoader= classLoader.getParent();
		}
		//反射
		Class<?> forName = Class.forName("M");
		Object newInstance = forName.newInstance();
		Method m = M.class.getMethod("refl");
		m.invoke(newInstance);
	}
}

class M{
	public static void refl(){
		System.out.println("hahaha");
	}
}


简单用法就像这样。




©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页