是否可以在变量中保存类型,
为了实例化这种类型的List?
//something like that
Type type = Boolean;
List<type> list = new List<type>();
list.add(true);
答案 0 :(得分:4)
对于第一个要求,您正在寻找Class
:
Class type = Boolean.class;
但是,我不认为秒要求是可行的,因为泛型类型仅存在于编译时:
List<type> list = new List<type>(); // invalid code
但是,您可以使用List<Object>
。它将接受Boolean
个对象。这是否会给你带来任何不合理的取决于你的用例。
答案 1 :(得分:1)
Generic是一个编译时功能,而不是运行时,所以你不能使用变量来确定泛型类型,即使使用NPE的注释(使用Class
)也不会编译:
Class<?> type = Boolean.class;
// can't do that...
List<type> list = new List<type>();
list.add(true);
答案 2 :(得分:1)
在第二种情况下,为什么在类型未知时想要使用泛型?你可以更好地使用非泛型arraylist(在jdk 5之前使用)。
List a = new ArrayList();
a.add(object);
更高版本仍然支持此样式,甚至在编译后,泛型样式也会转换为此表单。您将在上面的代码中收到警告,您可以禁止它。