public class Foo {
public static void main(String[] args) throws Exception {
// XXXXXXXXXXXX: EDIT THIS LINE
File classDirectory = new File("C:\\workspace\\foo\\");
// Create two Bars, one normal and one using reflection
Bar bar1 = new Bar();
Bar bar2 = (Bar) Class.forName("Bar").newInstance();
// Create a new class loader with the default (system) class loader as a parent
URL u = classDirectory.toURL();
URLClassLoader cl = new URLClassLoader( new URL[] {u} );
Class cls = cl.loadClass("Bar");
Object obj = cls.newInstance();
Bar bar3 = (Bar) obj;
// This will say "true"
System.out.println("bar1.getClass() == bar3.getClass(): " + (bar1.getClass() == bar3.getClass()) );
// Try to cast our classloaded object to a Bar. This will work.
System.out.println("First cast works!");
System.out.println("bar1.n: " + bar1.n);
System.out.println("bar2.n: " + bar2.n);
System.out.println("bar3.n: " + bar3.n);
bar1.n = 5;
System.out.println("bar1.n: " + bar1.n);
System.out.println("bar2.n: " + bar2.n);
System.out.println("bar3.n: " + bar3.n);
}
}