gpt4 book ai didi

java - 从整数列表的索引中打印字符串

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:06:01 25 4
gpt4 key购买 nike

我正在运行这段小代码:

List<String> abc = new ArrayList<String>();
abc.add("something");
List raw = abc;
List<Integer> def = raw;
System.out.println(def.get(0));

我不明白为什么在将包含 String 成员的列表分配给 Integer 列表时它没有抛出异常。此外,Integer 列表如何存储和打印 String?有人可以帮我吗?

最佳答案

这就是为什么你不应该使用原始类型的原因。

当你这样做的时候

List raw = abc;

你自己用列表删除类型。所以它们没有类型,编译器也没有错误。要获得泛型的好处,您应该避免使用原始类型。

并考虑阅读有关 Type Erasing 的内容.在运行时,列表对它们的类​​型一无所知。类型被删除,它们只会获得列表中可用的任何内容。

您预期的错误是编译器错误,同时您避免先给出类型。因此没有错误。

如果您真的想看到异常,请尝试将当前列表中的元素分配给一个 Integer。虽然编译器不会给您任何错误,但在运行时类型会匹配并且您会遇到异常。

如果你看看Raw Types docs , 你看到几乎相同的例子

Box<String> stringBox = new Box<>();
Box rawBox = stringBox;
rawBox.set(8); // warning: unchecked invocation to set(T)

The warning shows that raw types bypass generic type checks, deferring the catch of unsafe code to runtime. Therefore, you should avoid using raw types.

关于java - 从整数列表的索引中打印字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48060490/

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