郑泽凯
2016-07-13 15:20
采纳率: 33.3%
浏览 1.0k
已采纳

一段关于AbstractList的java代码有些不解, 望大神指教, 不胜感激

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的值, 这个过程是什么时候发生的, 是如何发生的?
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • blownewbee 2016-07-13 15:34
    已采纳

    返回的是实现AbstractList接口的匿名对象,这个匿名对象将参数传入的数组a包装成一个list。不存在“填充”只是给int[] a穿了马甲。

    点赞 打赏 评论

相关推荐 更多相似问题