Java Object类MYSTERY

时间:2014-04-10 09:02:23

标签: java class object

在移植游戏时,我来到以下声明

Object o = new Object[]{"A","B"};

真的很奇怪!

但是当我尝试使用" String"然后编译器报告错误消息

  

String s = new String [] {" A"," B"," C"};错误:类型不匹配:   无法从String []转换为String

你能否揭开它的神秘面纱?

5 个答案:

答案 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}}(反之亦然)。
实际上,在后一种情况下,你会将基元与对象混合在一起。