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