[英]Why doesn't Java allow extending type parameters?
為什么這段代碼無法編譯?
public class Wrapper<T> extends T {}
是因為這在語義上從來都不是正確的設計選擇嗎? 或者由於某種類型的歧義,這在物理上不能用任何語言編譯嗎?
我想您可以使用它來創建一個public class Persistent<T> extends T {}
,例如,它允許您使用某些功能擴展T
以將T
序列化為字節數組並將其存儲在磁盤上,同時仍然允許要傳遞給函數的Persistent<T>
實例,否則這些函數只會采用T
類型的值。
因此這是可能的:編輯:這是不可能的,因為load()
可能沒有合理的實現(正如michid
正確指出的那樣)。 不過,為了不破壞他的評論,我會把它留在這里。
Integer i1 = Integer.valueOf(5);
Persistent<Integer> i2= new Persistent<Integer>();
i2.load(i1) //example method to load i1 into i2, basically serializing it
List<Integer> myIntegers = new ArrayList<>();
famousPeople.add(i1);
famousPeople.add(i2);
當您extend
class 時,您可以通過超級 class 提供的一些額外功能來擴展現有功能。 當超級 class 為T
時,它可以是任何東西,但你不知道是什么。 那么你將如何擴展你一無所知的東西呢?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.