我有一個類,像這樣:
public class nVector<T extends nVector<?>> {
int i;
public T add(T a) {
}
}
,並希望出現以下情況:
public T add(T a) {
T b = this.clone();
b.i += a.i;
return b;
}
不過的實例通用類型T
是不允許的。然而,我可以很容易地在我的論點中包含一個T的實例。
我這樣做是因爲我有多個T
類型的子類,它們繼承了nVector
中的所有方法,並在「封閉環境」中自行處理。 (即他們只把自己的類型作爲參數,而不是其他孩子)
有什麼辦法解決這個問題?問題是,我有返回類型T
,而不是nVector<?>
。
是'T'應該是元素類型?爲什麼宣佈'T擴展nVector >'? – user2357112
請在問題本身中包含必要的上下文,而不是僅僅鏈接到其他問題。例如,這個問題缺少這樣一個關鍵的上下文,即這個類被定義爲'public class Child extends nvector',並且'this'實際上是'T'的一個實例。 –
user2357112
'public nVector>'由於缺少關鍵字而無法編譯。類型名稱不符合。 「NVector」的元素類型本身是「NVector」?不應該使用通配符。你想'公共接口NVector >'或類似的東西,假設你實際上意味着這個類型的工作方式類似於Enum和Comparable。 –