cltestlie.java

来自「kaffe Java 解释器语言,源码,Java的子集系统,开放源代码」· Java 代码 · 共 74 行

JAVA
74
字号
/* * Test for ClassLoader * * Tests what happens if a classloader lies and returns a class with the * wrong name. * * This test relies on CLTestConc_run.java and CLTestConc_bis.java * * Written by Godmar Back <gback@cs.utah.edu> */import java.io.File;import java.io.FileInputStream;public class CLTestLie extends ClassLoader{    protected synchronized Class loadClass(String name, boolean resolve)	throws ClassNotFoundException    {	Class c = null;	if (name.equals("CLTestConc_bis")) {		name = "java.lang.Object";	// whatever	}	if (name.equals("CLTestConc_run")) {		try {			byte [] b = readin(name + ".class");			c = defineClass(name, b, 0, b.length);		} catch (Exception e) {			e.printStackTrace();		}	} else {		c = findSystemClass(name);	}	if (resolve)	    resolveClass(c);	return c;    }    /*     * read a .class file     */    static byte [] readin(String name) throws Exception    {	File cf = new File(name);	FileInputStream cfi = new FileInputStream(cf);	int len = (int)cf.length();	byte [] cb = new byte[len];	if (cfi.read(cb) != len)	    throw new Exception("short read for " + name);	return cb;     }        public static void main(String []av) throws Exception    {	CLTestLie mcl = new CLTestLie();	Class a = mcl.loadClass("CLTestConc_run", true);	Object o = a.newInstance();	try {	    System.out.println(o);	    System.out.println("Failure");	} catch (NoClassDefFoundError e) {	    System.out.println("Success.");	    // System.out.println(e);	}    }}// sources: CLTestConc_run.java/* Expected Output:Success.*/

⌨️ 快捷键说明

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