想象一下您遇到这样的情况:
class AbstractClass{void sharedMethod()}
class ClassOne extends AbstractClass{void sharedMethod(); void specificMethod()}
class ClassTwo extends AbstractClass{void sharedMethod(); void specificMethod2()}
我想在地图上存储以下内容:
HashMap<String, List<SOMETHING_I_DON'T_KNOW_IN_ADVANCE>> hm = new HashMap<>();
hm.put("blabla", List<ClassOne>);
hm.put("blublu", List<ClassTwo>);
我知道我可以将AbstractClass用作地图的值类型,但我希望可以访问我的特定方法。我已经进行了一些研究,试图在获得对象时动态地投射对象,但没有发现任何令人满意的东西。
提前致谢
最佳答案
在您的AbstractClass中创建“抽象无效的specificMethod()”,然后在您的具体类中使specificMethod()的具体版本对您有用吗?
这样,您不必担心要调用specificMethodOne()还是specificMethodTwo()... AbstractClass对象已经知道它应该使用哪个版本的methodMethod。