import java.io.*;
public class VerboseClassLoader extends ClassLoader {
public VerboseClassLoader() {
super(getSystemClassLoader());
}
public Class loadClass(String name)
throws ClassNotFoundException {
System.out.println("Loading " + name + "...");
try {
byte[] b = loadClassData(new File(name +".class"));
Class c = defineClass(name, b, 0, b.length);
resolveClass(c);
return c;
} catch (IOException e) {
return getParent().loadClass(name);
}
}
private byte[] loadClassData(File f) throws IOException {
DataInputStream input =
new DataInputStream(new FileInputStream(f));
byte[] content = new byte[(int) f.length()];
input.readFully(content);
return content;
}
public static void main(String[] args) throws ClassNotFoundException,
InstantiationException, IllegalAccessException {
ClassLoader classLoader = new VerboseClassLoader();
Class clazz = classLoader.loadClass("A");
Object o = clazz.newInstance();
if (o instanceof A) {
System.out.println("Dans VerboseClassLoader : o instance de A");
} else {
System.out.println(
"Dans VerboseClassLoader : o n'est pas instance de A");
}
}
}