ore*_*ake 3 java generics variadic-functions
private void activateRecords(long[] stuff) {
...
api.activateRecords(Arrays.asList(specIdsToActivate));
}
Run Code Online (Sandbox Code Playgroud)
不应该调用Arrays.asList返回一个Longs 的列表吗?相反,它正在返回List<long[]>
public static <T> List<T> asList(T... a)
Run Code Online (Sandbox Code Playgroud)
方法签名与结果一致,varargs将整个数组抛出到列表中.它是一样的,new ArrayList(); list.add(myArray) 是的,我知道它的意思是这样使用:Arrays.asList(T t1, T t2, T t3)
我想我得到的是,而不是varargs形式,为什么我不能只使用我的旧asList方法(至少我认为这是它以前的工作方式),它将获取内容并将它们单独放入一个列表?这样做还有其他干净的方法吗?
无法在阵列上进行自动装箱.你被允许这样做:
private List<Long> array(final long[] lngs) {
List<Long> list = new ArrayList<Long>();
for (long l : lngs) {
list.add(l);
}
return list;
}
Run Code Online (Sandbox Code Playgroud)
要么
private List<Long> array(final long[] lngs) {
List<Long> list = new ArrayList<Long>();
for (Long l : lngs) {
list.add(l);
}
return list;
}
Run Code Online (Sandbox Code Playgroud)
(注意可迭代类型不同)
例如
Long l = 1l;
Run Code Online (Sandbox Code Playgroud)
但不是
Long[] ls = new long[]{1l}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2279 次 |
| 最近记录: |