【问题标题】:Some serious duplicate questions in Java [duplicate]Java中一些严重的重复问题[重复]
【发布时间】:2015-05-03 08:06:30
【问题描述】:

我不知道这对我来说是不是心理障碍还是什么,但尽管我花了几个小时研究已经提出的问题,但我还是无法得出最终结论。试图理解这么多不同的答案时,我迷失了方向。 :(

请告诉我执行以下操作的最佳方法。我花了相当多的时间来研究现有的问题,但无法得到底线。

我正在尝试将一个数组列表转换为一个数组,在此过程中,弹出了另一个关于对象和数组类型转换的问题。

    ArrayList<Integer> al = new ArrayList<Integer>();
    al.add(1);
    al.add(2);
    al.add(3);
    Object[] oa = al.toArray();
    int [] a = new int[al.size()];
    a = (int[]) oa;

在最后一行,它说我不能从 object[] 转换为 int[]。

那么,我该如何进行类型转换,因为 toArray 方法只返回一个 Object 数组。

【问题讨论】:

标签: java


【解决方案1】:

数组oa 是一个整数对象数组。而您正试图将其转换为 ints 的数组。

您必须记住,当您将数组转换为其他类型时,不会自动将引用类型 (Integer) 装箱/拆箱到原始类型 (int)。

【讨论】:

  • 那么,这是否意味着我必须遍历所有元素并使用 intValue() 方法将每个 Integer 转换为 int?
  • 我的问题是,你为什么需要这么糟糕的int[]?您已经拥有的Integer[] 有什么问题?但简单的答案是肯定的,两者之间没有自动转换......你注定要陷入循环。
  • 那也行不通。当我这样做时,它给了我一个类转换异常:Integer [] a = (Integer []) al.toArray();
  • @boyyett 我想你可能误解了......但如果你能接受Integer[],这就是你得到一个的方式:Integer[] integerArray = al.toArray(new Integer[]{})
【解决方案2】:

你不施放它;您从oa 获得Integers,将每个值作为int,您可以输入a

【讨论】:

    猜你喜欢
    • 2021-11-11
    • 1970-01-01
    • 2012-10-14
    • 2013-11-23
    • 1970-01-01
    • 2014-04-13
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    相关资源
    最近更新 更多