使用类对象作为泛型类型

tor*_*nde 4 java generics exception-handling exception

我不完全确定如何提出这个问题,这也是为什么我不确定标题等等.开始.

假设你有一个对象Foo foo = new Foo().是否可以编写类似的代码new ArrayList<foo.getClass()>(),这些代码在运行时是等效的new ArrayList<Foo>()

另一个相关的问题是:假设课程Foo延伸Exception.那么可以写出类似的东西吗?

try{
    // ...
} catch(foo.getClass() e) {
    //
}
Run Code Online (Sandbox Code Playgroud)

这将转化为

try{
    // ...
} catch(Foo e) {
    //
}
Run Code Online (Sandbox Code Playgroud)

这样做是否可怕,并不是重要的部分.但是,无论如何,我想听听合格的意见.

tor*_*omp 7

不,这在Java语言规范中是不可能的.通用参数纯粹是编译时类型安全机制,因此在运行时定义它们是非感性的.

代码中的类文字与Class<T>对象不可互换,因为它们本身具有不同的角色.后者仅在运行时具有意义,并且可以动态变化.