From: Harring F. <har...@ya...> - 2005-02-14 16:21:39
|
Folks: I posted this on the developer's list and got no reply. Hope this is the right list. Thank you for any help. I am trying to use the TestCaseClassLoader to load some of my classes (For a different project :P). I got it to work with a rather strange behavior. I am sure it is more of a 'id 10 t' type of error :). Here is what I have: C implements CI I can load C correctly; however, it says that C is not an intance of CI. If I use the default class loader, it indeed says it is an 'instanceof' CI. Andy ideas ? Thanks for any help in advance! (Here is the code.) /**** C class no package define -- I don't think it matters...*/ import somepackage; public class C implements CI{ public C() { System.out.println("Hello World"); } public void sayHello(){ System.out.println("Say Hello"); } /** CI interface **/ package somepacckage; public interface CI{ public void sayHello(); } class Test { public static void main(String[] args) { try{ TestCaseClassLoader cl= new TestCaseClassLoader(/* Classpath is defined !!! */); Class c = cl.loadClass("C", true); //Class c = cl.getClass().forName("C"); <== THIS WORKS !!! Object o = c.newInstance(); System.out.println(o.getClass().getName()); // Prints C System.out.println(" Object "+ o.getClass().getClassLoader().toString()); // Returns TestClassLoader if( o instanceof CI){ // goes here with default system classloader System.out.println(" Instance "+ o.getClass().getName()); ci = (CI)o; } else{ // GOES here with the TestClassLoader System.out.println("NOT Instance "+ o.getClass().getName()); } } __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com |