[英]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( Number
是Integer
, Long
等的超類);
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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.