Model görüntüleme sunucusu uygulamasını kontrol etmek için bazı sınıflar üretmeye çalışıyorum. Ben aşağıdaki tanımlarla geldim, ama özyinelemeden kaçınmak için mücadele ediyorum.İki sınıf arasındaki olası yinelemeli Java jenerikleri
public abstract class Presenter<V extends View<...?>> {
protected V view;
public Presenter(V view) {
this.view = view;
}
// ...
}
public abstract class View<P extends Presenter<...?>> {
protected P presenter;
// ...
}
İki sınıf arasında karşılıklı bir ilişki kurmak istedim. Bir Presenter'ı belirli bir Görüş için hazırlayabilmem, her iki sınıf da soyut temel sınıflarında tanımlanan yararlı metotlara dayanmaktaydı, ancak ikisinin de tam anlamıyla sınıfın hangi alt sınıfının kullanıldığını bilerek.
Sorunlarım, kodun ..?
bölümünü tanımlamaktadır. Görünüm sınıfı şimdi iki jenerik parametreleri ... kitle karışıklık alır gibi
public abstract class View<P extends Presenter<V>, V extends View<Q>, Q extends...>
ve hatta o tanımıdır tutarlı değildir: Ben gibi bir özyinelemeli durumu önlemek için bir yol göremiyorum.
// 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();
}
}
Bu sınıfların her biri somut uygulama sürekli gerekir:
Ben temelde aşağıdaki gibi somut uygulamaları boyunca döküm sürü gerektiren soyut sınıf türü referanslarla doludur edilen sınıfları kaçınmak istedi soyut türden "bilir" türüne göre kullanılır.
Mükemmel, bu numarayı bitti! Teşekkürler. –