我想獲取類模板的類型名稱(例如設置)。例如,當我使用:獲取類模板的類型名稱
Set<Personne> p = new HashSet<Personne>();
/* manipulate p etc ... */
如何使用類似p.getTypeName()
即使p是空的,我知道P(這是Personne)的類型名稱。
我想獲取類模板的類型名稱(例如設置)。例如,當我使用:獲取類模板的類型名稱
Set<Personne> p = new HashSet<Personne>();
/* manipulate p etc ... */
如何使用類似p.getTypeName()
即使p是空的,我知道P(這是Personne)的類型名稱。
在運行時,您不能。這是由於type erasure。
由於Java的類型擦除,您無法在運行時訪問參數化類型。但是,如果你知道它是什麼類型的可能是,只是想檢查它是否是其中的一個:像在C
if (someObject instanceof SomeType) {
...
} else if (someObject instanceof SomeOtherType) {
...
} ...
然而,即使你知道它可能是什麼類型,假設你有一些某些類型的對象,我猜你不能測試類型是SomeType還是SomeOtherType,當它是空的時,對吧? – shn 2012-01-31 14:35:05
@ user995434如果你有一個空集,爲什麼它傳遞了什麼參數? – 2012-01-31 14:36:35
假設您在本地有一組Some類型的對象,另一組爲SomeOtherType類型的對象。假設我保留了一組類型爲T的對象,如果這個集合是空的並且T是SomeType,我想清空(清除)集合A.如果每個對象中沒有指示符告訴你它是SomeType或SomeOtherType類型? @ChrisCashwell – shn 2012-01-31 14:53:10
Java有仿製藥,但沒有模板++。所以'HashSet'不是「類模板」。 Java中的泛型與C++中的模板不一樣。 – Jesper 2012-01-31 14:08:35