如果我這樣做:類型擦除 - 擴展Java泛型類是非通用
public class IntegerList extends ArrayList <Integer> { }
我是否能夠使用IntegerList
通常無需擔心類型擦除,這意味着我可以使用和創建它們的陣列和動態實例化它們,並且任何兼容的編譯器或IDE都能夠正確執行編譯和運行時類型檢查?
如果我這樣做:類型擦除 - 擴展Java泛型類是非通用
public class IntegerList extends ArrayList <Integer> { }
我是否能夠使用IntegerList
通常無需擔心類型擦除,這意味着我可以使用和創建它們的陣列和動態實例化它們,並且任何兼容的編譯器或IDE都能夠正確執行編譯和運行時類型檢查?
是的,IntegerList
是實體類型,這是我想你想說的。
雖然我們在它,ArrayList
也是一個具體化的類型,這意味着你可以做ArrayList
,你可以做IntegerList
做同樣的事情。 (但不是ArrayList<Integer>
,這不是一個具體化類型。)
的方法不太明白你的意思。我們沒有Java中的泛化泛型,而且你所說的內容也不同於對泛化泛型的正常理解。我很想知道你想表達什麼,你想介紹一下嗎? :) –
@AdrianShum:哪部分你不明白?當你做'新東西[5]'時,'東西'必須是一個具體化的類型。當你做'instanceof something'時,'something'必須是一個具體化的類型。所以這正是OP所談論的。通用類型是運行時存在的類型,即原始類型。 Java沒有物化的泛化,這與泛化的泛型沒有任何關係。在泛化泛型中,參數化類型是泛化類型。在Java中,它們不是。 – newacct
oops明白你的意思。我想我已經混淆了你正在談論的與泛化的泛型:P –
雖然我無法解釋技術上爲什麼,我知道答案是肯定的,我做這樣的東西沒有問題 – fge
是的,這是絕對好的(就語言)。在回答中很難給出任何東西,說實話......在設計方面它不太令人愉快 - 例如,並非每個「列表」都是一個「IntegerList」,所以它不像你可以使用的那樣他們互換。但它會*工作*。 –
是的,當然。您可以。這裏沒有任何疑問.. – iMBMT