【问题标题】:Java: Why isn't autoboxing happening here?Java:为什么这里没有自动装箱?
【发布时间】:2009-11-20 14:46:07
【问题描述】:

这给了我一个错误:

int[] l = new int[] {0, 2, 192, -1, 3, 9, 2, 2};
int[] l2 = new int[] {9001, 7, 21, 4, -3, 11, 10, 10};
int[] l3 = new int[] {5, 5, 5, 64, 21, 12, 13, 200};

Set<List<Integer>> lists = new HashSet<List<Integer>>();
lists.add(Arrays.asList(l));

Eclipse:Set&lt;List&lt;Integer&gt;&gt; 类型中的方法 add(List&lt;Integer&gt;) 不适用于参数 (List&lt;int[]&gt;)

我认为int 应该自动装箱为Integer

【问题讨论】:

  • 哦,伙计,您将集合对象命名为列表!

标签: java generics types autoboxing


【解决方案1】:

虽然 int 自动装箱为 Integer,但 int[] 并未自动装箱为 Integer[]。

数组没有装箱,只有类型本身。

请参阅:How to convert int[] into List<Integer> in Java? 了解解决方法和根本原因。

【讨论】:

    【解决方案2】:

    它会自动装箱

    Integer i = 1
    int ii = i;
    

    但是,您正在尝试转换一个数组,而当它尝试将一个基元数组作为对象数组放置时,它们是不同的。

    【讨论】:

      猜你喜欢
      • 2011-10-11
      • 1970-01-01
      • 2015-02-23
      • 1970-01-01
      • 2016-12-28
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多