gpt4 book ai didi

java - 为什么在 Java 中将 Integer 添加到 String 数组不会产生编译错误?

转载 作者:行者123 更新时间:2023-11-29 08:05:55 26 4
gpt4 key购买 nike

为什么我尝试将 Integer 添加到 Java 数组,声明为 Object[] 但实例化为 String[] , 不会产生编译错误?

Object[] ob = new String[1];
ob[0] = new Integer(1); // this shouldn’t compile but it does!

当我运行它时,我得到了运行时异常而不是(更喜欢的)编译时错误!这是正确的行为吗?我不应该得到一个编译时错误吗?

最佳答案

这是 Java 设计者做出的选择:String[]延伸Object[] , 但你不能添加除 String 以外的任何内容到 具体 类型为 String[] 的数组没有得到运行时异常。

他们本可以使以下内容无效:

Object[] ob = new String[1];

因为它有效地允许将任何类型的对象添加到数组中而不会出现任何编译器错误(正如您所注意到的),这是完全正常的,因为整数对象,而编译时数组的类型是Object[] .

他们没有为数组做出这个选择,但是他们为泛型集合做了这个选择:

List<Object> ob = new ArrayList<String>();

生成编译器错误,因为 List<String>不扩展 List<Object> .集合通常比数组更受青睐,因为它们更安全,并且提供更多的功能。

关于java - 为什么在 Java 中将 Integer 添加到 String 数组不会产生编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11284243/

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