问题归结为“是否可能有
我正在处理的事物的层次结构可以总结如下:
Dispatcher
- Controller
- Main View Component
- Optional Mini Controller
- Optional View Component
这里的每个组件都有一个抽象,这个抽象做了很多后端工作,每个具体的类都填补了一些空白。
Controller<T extends AbstractWhatever, U> {
T abstractMainView;
AbstractMiniController abstractMiniController;
}
Controller<ConcreteMainView, UnderlyingObjectType> {
abstractMainView.ConcreteMethod; // works
abstractMiniController.ConcreteMethod; // does not work
}
因为主控制器对主视图有一个通用T
,所以主视图被声明为T
,当我创建具体的主控制器时,我为{{ 1}},它现在知道我的主视图的所有方法。
但是,由于可选的控制器/视图没有提供作为类型参数的具体类,因此我必须进行大量转换:
T
是的,我不能给控制器一个类型参数:
Controller<MainView, Type> {
MainView.doStuff();
((ConcreteOptionalController) COP).doStuff();
((ConcreteOptionalController) COP).doSomeMoreStuff();
((ConcreteOptionalController) COP).doAllTheStuffs();
}
因为有时我什么都没放。我只是停留在无休止的公里长的强制转换+陈述中,还是有办法使这项工作更加完美?