我有一个超类 A,以及扩展 A 的 B、C 和 D 类。
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 studio不会在catch内的断点处停止,并且任何尝试从catch中保存有关异常的信息都会导致null ...)。
我理解为什么我不能动态指定新的对象类型,然后将 obj 转换为该类型,但是如果它们都共享共同的父对象,我不明白为什么它不起作用。
任何人都可以启发我如何解决我目前正在做的事情,或者以类似的方式实现同样的事情吗?
谢谢!/最大限度