我不完全確定如何提出這個問題,這也是爲什麼我不確定標題等等。開始。使用類對象作爲泛型
假設你有一個對象Foo foo = new Foo()
。是否有可能編寫像new ArrayList<foo.getClass()>()
這樣的代碼,在運行時會等於new ArrayList<Foo>()
?
另一個,但相關的問題是:假設類Foo
延伸Exception
。它是那麼可能寫出像
try{
// ...
} catch(foo.getClass() e) {
//
}
這將轉化爲
try{
// ...
} catch(Foo e) {
//
}
?
這是否是可怕的事情不是重要的一部分。但是,無論如何,我想聽聽有資格的意見。
運行時的泛型,我們經常在這裏得到:)在運行時'ArrayList'只是成爲'ArrayList'。擦除發生。只是爲了討厭 - 這可能在C#中。 –
@BenjaminGruenbaum不,它不是。 C#的泛型仍然*主要是*編譯時類型 - 安全特性(除了有意義地執行'typeof(T)'的能力,即你得到一個免費傳遞的類型標記),因此對於你使用反射的類型。 – millimoose