gpt4 book ai didi

需要 Java 泛型类型转换吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:16:31 25 4
gpt4 key购买 nike

这是我教科书中的代码:

Stack<String>[] a = (Stack<String>[]) new Stack[N];

我的问题是:

  1. 为什么是“new Stack[N]”?
  2. 为什么要对创建的新堆栈数组进行类型转换?我试了一下

    Stack<String>[] a = new Stack[N];

它编译并运行良好。即使在将字符串插入 a 并打印 pop 方法之后。此外,将 int 插入会立即给我一个编译器错误,所以为什么有必要将其类型转换为

Stack<String>[] 

具体是什么?

最佳答案

您不能创建具有参数化类型的数组(参见 Restrictions on Generics )。所以你不能使用 ... = new Stack<String>[N] .使用 ... = new Stack[N]将工作,但您将收到未经检查的转换警告(在 javac 中使用 -Xlint 以查看警告)。

因此,唯一正确的方法是使用原始参数创建数组,然后将经过检查的转换应用于所需类型。

关于需要 Java 泛型类型转换吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36366910/

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