⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loadertest.java

📁 kaffe Java 解释器语言,源码,Java的子集系统,开放源代码
💻 JAVA
字号:
import java.lang.reflect.Method;import java.io.ByteArrayOutputStream;import java.io.FileInputStream;import java.beans.Introspector;public class LoaderTest {	public static void main(String argv[]) throws Exception {		System.out.println("Loading Class0 with default ClassLoader");		Class c0 = Class.forName("LoaderTest_Class0");		show(c0);		ClassLoader l1 = new LoaderTest_Loader1();		System.out.println("Loading Class1 with Loader1");		Class c1 = Class.forName("LoaderTest_Class1", true, l1);		show(c1);		System.out.println("Loading Class1BeanInfo");		Introspector.getBeanInfo(c1);		System.out.println("Loading Class2 via Class1");		Object o = c1.newInstance();		Method m = c1.getMethod("getClass2", null);		Class c2 = (Class)m.invoke(o, null);		show(c2);		System.out.println("Loading Class3 via Class1");		m = c1.getMethod("getClass3", null);		Class c31 = (Class)m.invoke(null, null);		show(c31);		System.out.println("Loading Class3 via Loader2");		ClassLoader l2 = new LoaderTest_Loader2();		Class c3 = Class.forName("LoaderTest_Class3", true, l2);		show(c3);		System.out.println(c3.equals(c31));	}	public static byte[] getClassBytes(String name)			throws ClassNotFoundException {		ByteArrayOutputStream bas = new ByteArrayOutputStream();		try {			FileInputStream fis = new FileInputStream(			    name + ".class");			byte[] buf = new byte[1024];			for (int r; (r = fis.read(buf)) != -1; )				bas.write(buf, 0, r);			fis.close();			bas.close();		} catch (Exception e) {			throw new ClassNotFoundException();		}		return bas.toByteArray();	}	public static void show(Class c) throws Exception {		ClassLoader loader = c.getClassLoader();		if (ClassLoader.getSystemClassLoader().equals(loader))			loader = null;		System.out.println("-> class " + c.getName()		    + " loader " + loader);	}}// Sources: LoaderTest_Class0.java LoaderTest_Class1.java LoaderTest_Class1BeanInfo.java LoaderTest_Class2.java LoaderTest_Class3.java LoaderTest_Loader1.java LoaderTest_Loader2.java/* Expected Output:Loading Class0 with default ClassLoader-> class LoaderTest_Class0 loader nullLoading Class1 with Loader1LoaderTest_Loader1: finding LoaderTest_Class1...found-> class LoaderTest_Class1 loader LoaderTest_Loader1Loading Class1BeanInfoLoaderTest_Loader1: finding LoaderTest_Class1BeanInfo...foundLoading Class2 via Class1LoaderTest_Loader1: finding LoaderTest_Class2...foundLoaderTest_Loader1.findLibrary(LoaderTest_Class2.lib)-> class LoaderTest_Class2 loader LoaderTest_Loader1Loading Class3 via Class1LoaderTest_Loader1: finding LoaderTest_Class3...foundLoaderTest_Loader1.findLibrary(LoaderTest_Class3.lib)-> class LoaderTest_Class3 loader LoaderTest_Loader1Loading Class3 via Loader2LoaderTest_Loader2: finding LoaderTest_Class3LoaderTest_Loader2.findLibrary(LoaderTest_Class3.lib)-> class LoaderTest_Class3 loader LoaderTest_Loader2false*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -