首页 > 解决方案 > 为什么我需要重铸从 Java 中的对象数组中访问的整数数组?

问题描述

我有以下代码创建一个对象数组并将两个整数数组传递给它。然后,我想将另一个整数数组变量设置为对象数组中的一个数组。

但是,除非我执行 (int[]) 类型转换步骤,否则我会收到错误消息。为什么我需要执行此重铸?我会假设对象内的数组是 int[] ,因为它们就是这样传递的。

public class test {

    public static void main(String[] args){

        int[] arr1 = {1,2,3,4};
        int[] arr2 = {4,5,6};

        Object[] x = {arr1, arr2};

        int[] left =(int[]) x[0];

        for (int element : left){
            System.out.println(element);
        }

    }

}

标签: javaarraysobject

解决方案


这段代码应该回答你的问题

  public static void main(String[] args) {

    int[] arr1 = { 1, 2, 3, 4 };
    String[] arr2 = { "a", "b", "c" };

    Object[] x = { arr1, arr2 };

    int[] left = (int[]) x[0];
    for (int element : left) {
      System.out.println(element);
    }
  }

当您将 arr1、arr2 推入另一个 Object[] 类型的数组时,编译器不会假定 Object[] x 数组中的元素类型,因为它可以接受任何类型的数组。这就是为什么编译器会强制你转换 Object[] 数组 x 中使用的元素。


推荐阅读