簡體   English   中英

Java泛型在類型參數中擴展

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM