私はワイルドカードを見ており、とても簡単な方法でそれらを理解しています。 <? extends Type>
私は単純なワイルドカード使用ミスの理解
interface P<T> {
boolean eval(T e);
}
public class IsZero implements P<Integer> {
public boolean eval(Integer e) {
return e.intValue() == 0;
}
}
public class QQ<T> {
public void filter(Q<T> q1, Q<T> q2, P<T> p) {
while (!q2.isEmpty()) {
T tmp = q2.remove();
if (p.eval(tmp)) {
q1.add(tmp);
}
}
}
}
ので、このコードは、与えられた(ParameterTypeに)書き込みのためにそれを使用していたとき、私はちょうど(戻り値の)と<? super Type>
を読み取るためにそれらを使用。私はこれに同意するが、それはP<? super T>
だ理由evalはブール値を返しますので、私は把握カントます
/*
Q<? super T> q1 just used as a Parametertype for writing (add)
Q<? extends T> q2 just used as a Returntype for reading (remove)
P<? super T> p just used as Parametertype (eval)
*/
:私の教授は、次の解決策を書きましたか?または、Return/Parameterの全体が間違っていますか?
Q super T> q1、q2、およびpにはIntegerのサブクラスを含めることができ、整数自体だけでなく、T = Integerの場合もあるためです。 – Wietlol
申し訳ありませんが、サブクラスではありませんが、親:D – Wietlol