[英]Java generics extends in type parameter
我最近在Java項目中遇到了泛型問題。 以下是我實際問題的簡化版本。
abstract class Value{
public int value;
Value(int v){ value = v; }
}
class Wrap<T> {
T data;
Wrap(T data){ this.data = data; }
public void add(T value){
data = actualAdd(data, value);
}
public T actualAdd(T p1, T p2){/* other code. don't worry */}
}
顯而易見,我想在之后繼承Value
。
但當涉及到兩者結合時,即:
Wrap<? extends Value> wrapValue;
我真的希望add
接收Value
,即:
wrapValue.add(Value value)
代替
wrapValue.add(? extends Value value)
因為我只想累加值,所以其他字段無關緊要。
我知道如何用靜態方法做到這一點,應該是:
public static void staticAdd(Wrap<? extends T> wrapper, T value){/**/}
但是我該如何在方法成員中使用相同的技巧?
PECS (Producer Extends and Consumer Super)
是您的理想之選。 嘗試使用? super Value
? super Value
。
這是一篇文章,可能會幫助您獲得更多背景信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.