首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

高手帮忙解释下一个很短的程序,该怎么处理

2012-02-23 
高手帮忙解释下一个很短的程序 importjava.util.*publicclassCountingIntegerListextendsAbstractList I

高手帮忙解释下一个很短的程序

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

热点排行