我沒有一個實際的問題,我只是玩弄Java泛型,我意識到如果我用泛型創建一個類,我可以使用任何名稱作爲泛型部分的類所以在<>
內),它將被視爲一個不存在的類,作爲一個變量。Java泛型與現有類
因此,如果我使用String
作爲通用部分,它不會再是String
,因此例如您不能使用它的charAt()
方法。
我想,這是一個功能,因爲通常情況下,如果我知道我想要使用String
比我簡單地使用它,並且我不創建泛型類。
我對不對?
我沒有一個實際的問題,我只是玩弄Java泛型,我意識到如果我用泛型創建一個類,我可以使用任何名稱作爲泛型部分的類所以在<>
內),它將被視爲一個不存在的類,作爲一個變量。Java泛型與現有類
因此,如果我使用String
作爲通用部分,它不會再是String
,因此例如您不能使用它的charAt()
方法。
我想,這是一個功能,因爲通常情況下,如果我知道我想要使用String
比我簡單地使用它,並且我不創建泛型類。
我對不對?
通用允許我們使用不同類型的單個實現。
例如,考慮來自java的collection framework
。 List<T>
是一種通用類型,您可以在java中創建任何類型的List
。它爲您提供了不同的有用操作,您可以在不同的類型(如原始類型的包裝類)上執行這些操作。
如果您爲自定義類型使用泛型,那麼您可能需要指定某些實現來支持泛型功能。 您仍然可以使用類型的一般行爲。
List<String> list = new ArrayList<String>();
這是一個表格類型String
的列表。您可以像明智一樣創建任何List
。現在,您可以輕鬆使用由java提供的許多功能。現在,如果您需要Integer
的相同功能,那麼您需要重新編寫相同的功能。
java中名字的含義高度依賴於上下文。在相同的.java文件中,可以使用相同的名稱來表示不同的內容。例如請參閱http://stackoverflow.com/q/17690135/2158288 – ZhongYu
您可以限制泛型類型參數以擴展現有類型,在這種情況下,您可以使用該類型的方法。你是這個意思嗎? –
這是因爲<>之間的名稱只是一個名稱 - 一個類型變量的名稱。就像你可以給定一個類的同名變量一樣。這樣做不是個好主意,因爲它很混亂。 – Jesper