luk*_*uku 6 java reflection inheritance types casting
比方说,我们有一个叫做基类A和某些子类(B,C,D等).大多数子类都有方法,do()但基类没有.类AA提供了一个名为方法getObject(),这将创造类型的对象B,或C或者D,等等,但返回的对象类型A.
do()如果此方法可用,如何将返回的对象强制转换为具体类型并调用其方法?
编辑:
我不允许更改类A,子类的实现,或者AA,因为我使用一个封闭的源API ..是的,它确实有一些设计问题,你可以看到.
我认为更好的想法是实际上让类将方法A定义do()为抽象方法或具体的空方法。这样您就不必进行任何演员阵容。
如果不允许您更改任何类,那么您可以定义一个类MyA extends A,该类定义了do()方法 and MyB, MyC,... ,而 aMyAA基本上会执行该AA操作,只是返回类型为MyB, MyC...的对象。
如果这不行,那么除了检查返回的对象是否属于类型B并进行强制转换B等等之外,我没有看到其他方法。