static List<Integer> intArrayAsList(final int[] a){
if(a == null)
throw new NullPointerException();
return new AbstractList<Integer>() {
@Override
public Integer get(int i) {
return a[i];
}
@Override
public int size() {
return a.length;
}
@Override
public Integer set(int i, Integer val){
int oldVal = a[i];
a[i] = val;
return oldVal;
}
};
}
为什么返回的List就已经填充了数组a的值, 这个过程是什么时候发生的, 是如何发生的?
返回的是实现AbstractList接口的匿名对象,这个匿名对象将参数传入的数组a包装成一个list。不存在“填充”只是给int[] a穿了马甲。