请考虑以下代码:
Object obj = {};
这会导致以下错误:
Type mismatch: cannot convert from Object[] to Object
但是,根据Java标准every Array is an Object:
在Java编程语言中,数组是对象(§4.3.1),是动态创建的,可以分配给Object类型的变量(§4.3.2)。可以在数组上调用Object类的所有方法。
除此之外,以下代码段编译没有任何问题:
Object [] arr = {};
Object obj = arr;
问题:我在第一个代码示例中遗漏了什么,即为什么它无效?
P.S。:我几乎肯定有人已经问过这个问题,因为它看起来很基本。但是,我既没有在谷歌也没有找到任何有用的结果(也许是因为在搜索中忽略了方括号?)。如果有重复,我错过了,那么请随时关闭我的问题。 为了记录,我检查了以下问题。虽然他们的头衔似乎很有希望,但他们都处理其他类型的问题,或者没有包含我的问题的答案:
答案 0 :(得分:0)
内联数组初始化只能用于数组类型声明 - 它是语言语法的一部分。
在java 8中,这一行
Object o = {};
不会给出您报告的编译错误。相反,它给出了:
此处不允许使用数组初始化程序
数组初始值设定项只能 显示为数组的初始值。