日期:2014-05-20  浏览次数:20700 次

关于ClassLoader理论问题请教

强制转换为接口ICounter就不会报错,强制转换为自己Counter就报错ClassCastException.


用-verbose:class看它加载的class也没什么区别,请问该怎么解释这个问题好呢?

另外想结交些立志同道合之士一起探究Java的世界。我的QQ1401145025
------解决方案--------------------
引用:
Quote: 引用:

应该不是同一ClassLoader加载的,就是 (Counter) 和 tmp.loadClass("....Counter") 这两个。所以说一般应该先给父类加载器加载,找不到再自己加载

是的,是由于不同的ClassLoader而导致异常,但是为什么强制转换 ICounter 接口,就不会报异常呢?这个该怎么解释呢~~~
在这里只有tmp.loadClass的返回的这一个Counter是自定义类加载器加载的,其他的Counter和其他所有的类都是使用系统默认的类加载器