实现类的ClassCastException

时间:2014-08-12 04:08:56

标签: java classloader classcastexception

这个问题与can't cast to implemented interface中的问题非常相似。 Classloader issues - How to determine which library versions (jar-files) are loaded

我有一个实施甜菜的Apple类。甜菜延伸胡萝卜

Carrot c= x.getCarrot();
c.getClass() //returns Apple
c.getClass().getInterfaces()[0] //returns Beet.

我想访问Apple内部的方法。所以我所做的就是向甜菜投了c。

 Beet b=(Beet)c;

此时我收到了ClassCastException。我认为这是由于上述链接中讨论的ClassLoader问题。

但我不明白如何解决这个问题。我不太了解OSGi,我不知道如何推荐捆绑包。有人可以向我解释如何解决这个问题和一个很好的参考点。

1 个答案:

答案 0 :(得分:0)

听起来像你有一个类加载器问题。您是从多个捆绑包导出相同的包,还是嵌入类/包以及将其导出到其他位置?

一个建议是始终导入您导出的内容。这样,所有包都将从同一个包中导入每个类,并且您的类转换应该可以工作。

有用的博文: http://blog.osgi.org/2007/04/importance-of-exporting-nd-importing.html