【发布时间】:2013-10-17 07:25:37
【问题描述】:
我不完全确定如何问这个问题,这也是我不确定标题等的原因。来了。
假设你有一个对象Foo foo = new Foo()。是否可以编写像new ArrayList<foo.getClass()>() 这样的代码,在运行时相当于new ArrayList<Foo>()?
另一个但相关的问题是:假设类Foo 扩展了Exception。那么是否可以写类似的东西
try{
// ...
} catch(foo.getClass() e) {
//
}
这将转化为
try{
// ...
} catch(Foo e) {
//
}
?
这样做是否可怕,并不是重要的部分。不过,我还是想听听有资格的意见。
【问题讨论】:
-
运行时泛型,我们经常在这里得到这些 :) 在运行时
ArrayList<T>只是变成ArrayList。发生擦除。只是烦人 - 在 C# 中是可能的。 -
@BenjaminGruenbaum 不,不是。 C# 的泛型仍然主要是一种编译时类型安全特性(除了能够有意义地执行
typeof(T),即您可以免费获得一个类型令牌),因此不要使用反射获得的类型来感知。
标签: java exception generics exception-handling