【问题标题】:Referencing an integer variable to array of Object class将整数变量引用到 Object 类的数组
【发布时间】:2014-07-18 12:36:14
【问题描述】:
int arr[] = new int[2];
Object obj = arr;

上面的代码是有效的,但是在写

Object obj[] = new Object[2];
int arr = obj;

给出编译时错误。为什么?我对 Java 完全陌生;谁能解释一下?

【问题讨论】:

    标签: java


    【解决方案1】:

    第一个是有效的,因为在 Java 中:数组是一个对象。

    Arrays (The Java Tutorials)

    数组是一个容器对象,包含固定数量的单一类型值。

    但是,第二个,Object 数组不是int,这就是它失败的原因。

    【讨论】:

      【解决方案2】:

      所有Arrays 都是Objects。但并非所有Objects 都不是arrays/ints

      int arr[]=new int[2];
      Object obj=arr;// valid . an int array is also an Object
      
      Object obj[]=new Object[2];
              int arr=obj; // an int is not an Object array
      

      【讨论】:

        【解决方案3】:

        在第一种情况下,您创建的数组继承自 Object,因此它按预期工作。

        在第二种情况下,Java 中的整数是原始类型,您尝试分配一个对象。原始类型不是 Object,所以它永远不会起作用。

        【讨论】:

          【解决方案4】:

          Java 中的数组是对象,所以第一个 sn-p 是有效的。另一方面,对象数组肯定不是 int,因此第二个 sn-p 失败。问问自己:如果要编译该 sn-p,您希望 arr 持有什么?

          来自JLS §10

          在 Java 编程语言中,数组是对象 (§4.3.1),是动态创建的,可以分配给 Object (§4.3.2) 类型的变量。

          (强调我的)

          【讨论】:

            猜你喜欢
            • 2020-09-11
            • 1970-01-01
            • 2020-07-20
            • 1970-01-01
            • 1970-01-01
            • 2016-11-23
            • 1970-01-01
            • 2013-06-11
            • 1970-01-01
            相关资源
            最近更新 更多