在移植游戏时,我来到以下声明
Object o = new Object[]{"A","B"};
真的很奇怪!
但是当我尝试使用" String"然后编译器报告错误消息
String s = new String [] {" A"," B"," C"};错误:类型不匹配: 无法从String []转换为String
你能否揭开它的神秘面纱?
答案 0 :(得分:5)
您的代码中存在一个微不足道的错误。 每个类扩展Object 的事实使得错误更难找到。
由于每个类(包括数组)都扩展Object
,因此可以从A[]
转换为Object
。
你写了int i = new int[]
但这是一个错误,你应该写int[] i
。
可能。 Object a = new Object[]
不是你想要做的。
答案 1 :(得分:3)
在Java
中,数组也是Object
。所以你可以做到
Object o = new Object[]{"A","B"};
或
Object o = new String[]{"A","B"};// But array of String not a String
或
Object o = new int[]{1,2};// But array of int not an int
答案 2 :(得分:2)
"数组"对象也是一个对象。但是一个"阵列"整数不是一个整数。 即,int引用不能指向数组但是对象引用可以。
Object[] obj = new Object[5];// works fine
答案 3 :(得分:1)
对象可以是任何东西。它可以是一个数组,也可以是一个变量。
Object O = new Object[]{"S","A"};
答案 4 :(得分:0)
每个数组都是Object[]
AND 和Object
,这就是为什么以下内容同样有效:
Object[] o = new Object[]{"A","B"};
Object o = new Object[]{"A","B"};
但是String[]
不是一个String
(反之亦然)而int[]
不是一个{{ 1}}(反之亦然)。
实际上,在后一种情况下,你会将基元与对象混合在一起。