如果Java不支持参数化类型数组,那么Arrays.asList()如何与它们一起使用?

FuzzyCat444:

假设该方法Arrays.asList如下所示:

public static <T> List<T> asList(T... a)

T...实际上等效于T[],但是Java是否不禁止泛型类型的数组?例如:

// Example 1
ArrayList<Integer>[] list = new ArrayList<Integer>[10];  // This is not allowed

// Example 2
List<ArrayList<Integer> > listOfList = Arrays.asList(new ArrayList<Integer>(), new ArrayList<Integer>());  // Allowed?

在示例2中,我传递的两个参数暗示Arrays.asListArrayList<Integer>[]作为与示例1相矛盾的参数。为什么在示例1不起作用的情况下示例2仍起作用?

拉文德拉·兰瓦拉(Ravindra Ranwala):

您可以在Java中声明一个泛型类型数组,这是完全合法的。所以这应该工作。

private E[] array;

但是您不能像这样实例化一个通用数组,因为数组已经过验证并且所有通用类型都作为擦除实现。因此,这种虚拟化E在运行时不可用,您很不走运!

array = new E[10];  // Illegal and gives compiler error.

但是您这里有一个解决方法。您可以做的只是演员表。

array = (E[]) new Object[10];

这样,您可以在Java中创建和实例化通用数组。您可以@SuppressWarnings("unchecked")在最低级别使用,也可以在声明的位置使用,以摆脱编译器发出的任何未经检查的警告。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果 Java 不支持指针,那么它如何记录保存数据的内存位置?

在 web api 中使用数组作为参数时不支持的媒体类型错误?

使用Spring Data JDBC不支持的类型的查询参数?

Arrays.asList与Arrays.stream一起使用forEach()

如何从 json 数组中获取 Json 对象并将它们与模型类一起使用

领域,初始化一个空字符串数组将在构建时返回“不支持的类型java.lang.String []”

如果不支持嵌套类型,如何定义可为空的类型

如何使输入与参数一起使用?

如何与范围数组一起使用WITH

输入和输出,如何与它们一起使用以遵循Angular 2的样式指南的命名约定?

如何使TLS与Java一起使用?

如果C ++中的DLL不支持二进制封装,那么什么时候才可以使用它们呢?

gRPC和ASP Net Core:GrpcChannel不支持将SslCredentials与非null参数一起使用

类型推断如何与可选参数一起使用?

java.sql.SQLException:将HikariCP与Hive JDBC一起使用时不支持该方法

如何使用PL / SQL数组或集合作为参数,然后按索引将它们联接在一起

当将lambda作为参数传递给LINQ时,'LINQ to Entities不支持LINQ表达式节点类型'Invoke',但直接使用时不支持

尾随返回类型,declval和引用限定符:它们可以一起使用吗?

指针如何与Java中的原始类型一起使用?

如何分隔数字中的数字,然后用Java将它们加在一起?

如果与sumigniter Select一起使用,如何使用?

如果它们是同一子类的实例,则在Java中使用同步不允许乐器一起演奏

如果asp.net mvc不支持页面加载事件,那么在mvc中我们应该如何处理页面laod事件

与openjdk一起使用gradle 14不支持的类文件主要版本58

将SQL Server与MySQL一起使用时出现“不支持选项”错误

将JDBI与不支持预准备语句的JDBC驱动程序一起使用

Delphi REST GET但不支持POST与AusPost eParcel API一起使用

当与-Pz一起使用时,grep命令不支持行锚的起始'^'和'$'

sql:转换参数$ 1类型:不支持的类型[] int,in中的一个切片