Class.forName返回一个内部类?

时间:2012-08-30 14:53:24

标签: blackberry reflection classcastexception

我正在编写一个BlackBerry应用程序,它从Web服务器加载XML并根据XML标记生成对象。这些生成的对象都实现了相同的接口,并在使用前强制转换为此接口。

我最近在消息应用程序中实现了菜单项,选中后,启动我的应用程序并按下屏幕。这个屏幕应该从服务器获取XML并像平常一样创建对象 - 如果没有从菜单项中调用它,它就可以工作。

从菜单项调用时,我只收到页面上只有一种类型对象的ClassCastException。类似的对象被强制转换,并且当它没有从菜单项类实例化时,该对象被强制转换。

以下是它的有趣之处:在调试器中,当正常对XML标记运行Class.forName时,我可以突出显示生成的Class对象以查看

  Class my.package.location.ClassName$MyAppName

当我从菜单项调用它并获得类强制转换异常时,Class对象显示为

  Class my.package.location.ClassName$XMLReflectionTest

我想这就是演员阵容失败的原因,尽管两者似乎都是指我的对象。

XMLReflectionTest不是我项目中的类或子类,但Google只返回两个搜索结果,这两个搜索结果都没有相关性。

它在其他任何地方都能正常工作,即使是使用相同方法的不同类也是如此! 为什么使用相同的类字符串调用Class.forName会返回两个“不同”类,基于从哪里调用它?

我已经研究过ClassLoaders,我可能会遇到这个问题,但那么为什么这个问题只发生在一个类中,而不是所有类?

0 个答案:

没有答案
相关问题