我不完全确定如何提出这个问题,这也是为什么我不确定标题等等。开始。使用类对象作为泛型
假设你有一个对象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