private void activateRecords(long[] stuff) {
...
api.activateRecords(Arrays.asList(specIdsToActivate));
}
这个对Arrays.asList的调用不应该返回Long
的列表吗?相反,它返回List<long[]>
public static <T> List<T> asList(T... a)
方法签名与结果一致,varargs将整个数组抛出到列表中。它与new ArrayList(); list.add(myArray)
相同,是的,我知道它的意思是这样使用:Arrays.asList(T t1, T t2, T t3)
我想我得到的是,而不是varargs形式,为什么我不能只使用我的旧asList方法(至少我认为这是它曾经如何工作)将采取内容并把他们单独列入名单?这样做的任何其他干净方式?
答案 0 :(得分:7)
那是因为long []和Long []是不同的类型。
在第一种情况下,T为long [],在第二种情况下T为Long。
如何解决这个问题?首先不要使用long []?
答案 1 :(得分:5)
无法在阵列上进行自动装箱。你被允许这样做:
private List<Long> array(final long[] lngs) {
List<Long> list = new ArrayList<Long>();
for (long l : lngs) {
list.add(l);
}
return list;
}
或
private List<Long> array(final long[] lngs) {
List<Long> list = new ArrayList<Long>();
for (Long l : lngs) {
list.add(l);
}
return list;
}
(注意可迭代类型不同)
e.g。
Long l = 1l;
但不是
Long[] ls = new long[]{1l}