我有一个超类A和类B,C和d扩展A.Java类铸造抛出异常
class A {}
class B extends A {}
class C extends A {}
class D extends A {}
然后,我有一个这样的名单:
[B.class, C.class, D.class]
我走从列表中随机选项并实例化它:
Object obj = list.get(i).newInstance()
现在我需要将obj传递给接受类型A的对象作为参数的方法。
A a = (A) obj
导致Java来抛出一个异常(无论是InstantiationException或IllegalAccessException,我不知道是因为Android的工作室将不会在catch里面断点处停止,任何试图挽救约从捕获结果的异常信息在null ...)。
我明白为什么我不能动态地指定新的对象类型,然后将obj转换为该类型,但是如果它们都共享共同父项,我不明白为什么它不起作用。
任何人都可以启发我如何解决我目前正在做的事情,或以类似的方式实现同样的事情吗?
谢谢! /最大
你可以显示你的方法,你如何调用它,以及完整的堆栈跟踪? –
'InstantiationException或IllegalAccessException,我不知道',你如何期待我们知道? – jbx
你能不能展示newInstance()方法的代码? – Ankit