我正在尝试生成一些类来控制模型 – 视图 – 演示者应用程序.我提出了以下定义,但我正在努力避免递归泛型.
public abstract class Presenter
我想强制实现两个类之间的相互关系.我的想法是我可以为特定的View实例化一个Presenter,两个类都依赖于抽象基类中定义的有用方法,但两者都确切地知道对应的抽象类的子类正在使用中.
我的问题是定义..?部分代码.我无法看到避免递归情况的方法,例如:
public abstract class View
甚至那个定义也不一致,因为View类现在需要两个通用参数……质量混乱.
我基本上想避免使用对抽象类类型的引用而散乱的类,需要在整个具体实现中进行大量的转换,如下所示:
// simpler option
public abstract class Presenter {
protected View view;
public Presenter(View view) {
this.view = view;
}
}
public class FooPresenter extends Presenter {
public FooPresenter(BarView view) {
super(view);
}
public someMethod() {
((BarView) getView()).viewSpecificMethod();
}
}
这些类的每个具体实现都需要不断地从抽象类型转换为它“知道”正在使用的类型.
最佳答案
尝试
public abstract class Presenter
和
public abstract class View
这会限制演示者将任何视图作为其通用参数和视图以具有任何演示者.