gpt4 book ai didi

java - 为什么会出现通用数组创建错误?

转载 作者:行者123 更新时间:2023-12-02 11:03:57 26 4
gpt4 key购买 nike

class Generic<T> {}
Generic<Object>[] gib;
gib = new Generic<Object>[5]; // here is the line throwing Generic array creation error

我不明白为什么这个示例应该被视为通用数组创建,因为到目前为止我所看到的通用数组创建都是以Generic<T>[SIZE]这样的形式创建的,具有未知类型参数。但在此示例中,我将类型参数显式设置为 Object ,我想我对泛型数组的理解一定有一些缺陷,希望有人能帮忙。

最佳答案

您不能这样做,因为在运行时,泛型类型参数将被删除,并且您将失去类型安全性。

下面的代码片段演示了这一点,取自 here

Object[] stringLists = new List<String>[];  // compiler error, but pretend it's allowed
stringLists[0] = new ArrayList<String>(); // OK
stringLists[1] = new ArrayList<Integer>(); // An ArrayStoreException should be thrown,
// but the runtime can't detect it.

“运行时无法检测到它”,因为类型参数在运行时消失了。运行时认为ArrayList<String>ArrayList<Integer>是同一件事 - ArrayList 。创建数组时输入什么泛型类型参数并不重要。

关于java - 为什么会出现通用数组创建错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51121215/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com