ジェネリックにいくつか問題があります。ジェネリック型の引数を持つメソッドを呼び出すときの問題
私がLinkedListのをラップするクラスを持っている:
public class IdnList<T extends Numerable> extends IdnElement implements List<T> {
private LinkedList<T> linkedList;
@Override
public boolean add(T e){
return linkedList.add(e);
}
//stuff
}
このクラスextends
のジェネリック型T
Numerable
インターフェースがありますのでご注意ください。
[OK]を、今、別のクラスの内部で、私は次のようにこのメソッドを呼び出したい:The method add(capture#1-of ?) in the type IdnList<capture#1-of ?> is not applicable for the arguments (Numerable)
を、そしてそれが動作することはできませんなぜ私は本当に理解することはできません。
if(childToAdd instanceof Numerable)
((IdnList<?>)this).add((Numerable)childToAdd);
が、日食は述べています。なぜ私のリストにNumerable
オブジェクトを追加できないのですか? 私は何が欠けていますか?
編集: これは古典的です。あなたは尋ねると、あなたは手がかりを見つける。回避策のようです:
((IdnList<Numerable>)this).add((Numerable)childToAdd);
しかし、私はそれがどれほどエレガントかわかりません。それ以上のコメントは本当にありがたいです。
ation)? – assylias
おっと、申し訳ありません。それは 'IdnElement'です。 – MaVVamaldo