gpt4 book ai didi

java - 数组和泛型之间的区别

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:15:57 24 4
gpt4 key购买 nike

刚看了《Effective Java》,看到一句话是这么说的

因此,数组提供运行时类型安全但不提供编译时类型安全,反之亦然

我不是很清楚,即使在我阅读了所有给出的例子后我还是很困惑。任何人都可以向我解释一下,谢谢一百万。

最佳答案

您不能在运行时更改数组(引用)的类型。但是您可以编译尝试的代码。

String[] strings = new String[1];
Object[] objects = strings;
objects[0] = new Integer(1); // RUN-TIME FAILURE

当您编译您的应用程序时,编译器不会抛出任何错误。

另一方面,如果您使用泛型,这将在您编译(构建)您的应用程序时给您一个错误。

ArrayList<String> a = new ArrayList<String>();
a.add(5); //Adding an integer to a String ArrayList - compile-time failure

换句话说,您不需要实际运行您的应用程序并执行那段代码来查找问题。

请注意,编译时故障比运行时故障更可取,因为您在将问题发布给用户之前就发现了问题(之后就太晚了)!

关于java - 数组和泛型之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20461885/

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