假设我有一些Object o
和o instanceof XXX == true
。我现在想要创建(在运行时)类型为XXX ArrayList<XXX>()
的ArrayList。有没有办法做到这一点?我目前只创建ArrayList<Object>
,但这还不够。
答案 0 :(得分:2)
当运行时检查可参数化类型本身(如java.util.List)时,无法知道参数化的类型。这是有道理的,因为类型可以参数化为同一应用程序中的所有类型。但是,当您检查声明使用参数化类型的方法或字段时,您可以在运行时看到参数化参数化类型的类型。
http://tutorials.jenkov.com/java-reflection/generics.html
不幸的是,您无法在运行时获取参数化类型。仿制药被设想为提供编译类型的安全性。 希望上面的链接有帮助=)
答案 1 :(得分:1)
我担心你不能这样做。泛型只是为了给你编译时类型安全。