高手帮忙解释下一个很短的程序
import java.util.*;
public class CountingIntegerList extends AbstractList <Integer> {
private int size;
public CountingIntegerList(int size) {
this.size = size < 0 ? 0 :size;
}
public Integer get(int index) {
return Integer.valueOf(index);
}
public int size() { return size ; }
public static void main(String[] args) {
System.out.println(new CountingIntegerList(30));
}
}
这个的输出结果怎么是:
[0,1,~~~一直到29]
我搞不懂的是:
new CountingIntegerList(30)这个语句不是只改了size的值,而没有对元素赋值吗?
为什么..输出结果里面有元素值??
------解决方案--------------------出现这种情况的原因是下边这两段代码,覆盖了父类的方法
public Integer get(int index) {
return Integer.valueOf(index);
}
public int size() { return size ; }
println的时候对List进行toString(),toString()内部使用Iterator迭代,而Iterator内部又使用size()来判断有多少个元素,所以会返回30个数值。同时toString()会调用get(int index)来获取元素。。。
所以实际上只是显示了index