在 java 中将泛型类型作为参数传递



是否可以在变量中保存类型,
为了实例化这种类型的列表?

//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);

更高版本仍然支持这种样式,甚至泛型样式在编译后也会转换为这种形式。您将在上面的代码中获得可以抑制的警告。

最新更新