java 为什么这个泛型数组创建不像预期的那样工作?

bluesky1年前 ⋅ 125 阅读

ChatGPT的回答仅作参考:

Java 中的泛型数组创建可能不像预期的那样工作,因为 Java 中的数组是协变的,而泛型是不可变的。

具体来说,当我们创建一个泛型数组时,例如:

```java
List<String>[] arrayOfLists = new List<String>[2];
```

我们期望得到一个包含两个 `List<String>` 对象的数组。然而,Java 不允许我们创建泛型数组,因为泛型是在编译时进行类型擦除的,这意味着在运行时无法确定泛型类型。因此,我们不能直接创建一个泛型数组。

相反,我们可以创建一个 Object 数组,并将其转换为泛型数组:

```java
Object[] arrayOfObjects = new List<String>[2];
List<String>[] arrayOfLists = (List<String>[]) arrayOfObjects;
```

但是,这种转换可能会导致运行时异常,因为我们无法保证数组中的所有元素都是正确的类型。因此,Java 中的泛型数组创建可能不像预期的那样工作。

全部评论: 0

    相关推荐