Am I missing something, or do varargs break Arrays.asList?

前端 未结 2 1342
眼角桃花
眼角桃花 2021-01-20 18:50
  private void activateRecords(long[] stuff) {
    ...
    api.activateRecords(Arrays.asList(specIdsToActivate));
  }

Shouldn\'t this call to Array

相关标签:
2条回答
  • 2021-01-20 19:12

    Autoboxing cannot be done on arrays. You are allowed to do:

    private List<Long> array(final long[] lngs) {
        List<Long> list = new ArrayList<Long>();
        for (long l : lngs) {
            list.add(l);
        }
        return list;
    }
    

    or

    private List<Long> array(final long[] lngs) {
        List<Long> list = new ArrayList<Long>();
        for (Long l : lngs) {
            list.add(l);
        }
        return list;
    }
    

    (notice that the iterable types are different)

    e.g.

    Long l = 1l;
    

    but not

    Long[] ls = new long[]{1l}
    
    0 讨论(0)
  • 2021-01-20 19:37

    That's because long[] and Long[] are different types.

    In the first case T is long[], in the second T is Long.

    How to fix this? Don't use long[] in the first place?

    0 讨论(0)
提交回复
热议问题