簡體   English   中英

Java泛型方法的參數

[英]Parameters of a Java generic method

我正在試圖找出整個Java泛型主題。

更具體地說這個問題:

public class Node<E>{
    private E data;
    public Node(E data){
        this.data=data;
    }
    public E get(){
        return this.data;
    }
    public void set(E data){
        this.data=data;
    }
}

如何添加“擴展”通配符,指定set方法可以接收E 任何繼承類E(在這種情況下,Node將保留參數的上傳版本)。

或者即使我按原樣離開它也會有效嗎?

(我可能會對泛型類型的不變方面感到困惑。)

謝謝!

您聲明了Node<E>類,它已經接受了E任何繼承類。

你的班級已經在做你需要的了。 讓我們舉例說明。 假設你已經創建了Node( NumberIntegerLong等的超類);

Node<Number> numberNode = new Node<Number>(1);

您也可以通過傳遞其子類來調用set方法

numberNode.set(new Integer(1));
numberNode.set(new Long(1));

如果你使用

public void set(E extends SomeType){
 this.data=data;
 }

然后你可以傳遞任何implements or extends SomeType Remeber的對象, SomeType也可以在這里作為一個interface ,即使它很奇怪,我們需要編寫E extends SomeType

或者它會起作用嗎?

或者,如果它有效,試過嗎?

        final Node<Number> n =  new Node<Number>(new Integer(666));
        System.out.println(n.get());
        n.set(new Integer(777));
        System.out.println(n.get());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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