におけるジェネリック医薬品の2つのレベルを使用して、私はこの一般的なインタフェースがあります。私はこのような使用抽象クラス定義
public interface TjbListener<T> {
public void hearChange(T t);
}
をジェネリック型Uをパラメータとし、それ自体がUのメソッド(2)を呼び出すメソッド(1)を持っています。以下は、私の試みであるUを一般的なTjbListenerインタフェースを拡張する(または実装する)方法です。私はこの質問を書いていたように私は考え
public abstract class ListenerInformer<U extends TjbListener<"what should I write here">> {
List<U> mListeners = new ArrayList<U>();
public void addListener(U u){
mListeners.add(u);
}
public void informAll("what should I write here"){
for(U u:mListeners){
u.hearChange("what should I write here");
}
}
}
一つの解決策は以下の通りですが、それは本当に解決策だ場合、私は知らない、またはそれは微妙な問題がある場合、私は理解していない:
public abstract class ListenerInformer<U extends TjbListener<T>,T> {
List<U> mListeners = new ArrayList<U>();
public void addListener(U u){
mListeners.add(u);
}
public void informAll(T t){
for(U u:mListeners){
u.hearChange(t);
}
}
}
UPDATE:同じクラスは異なるパラメータで同じインターフェイスを実装することはできませんので、私はちょうどこのアプローチは私の特定の場合にはほとんど役に立たないことを発見した
を注意してください。以下のリンク先の質問を参照してください。つまり、私の(またはJohannaの)ソリューションでは、異なるクラスターを使用せずに、1つのクラスを2つの異なるタイプのリスナーにすることはできません。
How to make a Java class that implements one interface with two generic types?
解決するには?それは少し過剰に設計されたように見える... – aviad
私はあなたの解決が大丈夫だと思う –
私は秒、あなたのソリューションはいいですし、私は@aviadに同意、それ以上のengeeneredされていません。 – Snicolas