苦逼的容器Collection!

最近学到容器,觉得挺难的,遇到过两个问题,在这发泄一下!!!

一:有关于容器对象.toString()的问题。

public class TestCollection {
 
 public static void main(String[] args) {
  Collection c = new ArrayList();
  c.add("hello");
  c.add(new Integer(100));
  System.out.println(c);
 }

}

打印结果为

但经查看ArrayList并没有重写.toString(),那这个.toString()是从哪来的呢。然后查看了万能的API文档。真相大白!

ArrayList类继承了AbstractList类。

public class ArrayList<E>extends AbstractList<E>

而AbstractList则继承了AbstractCollection类

public abstract class AbstractList<E>extends AbstractCollection<E>

System.out.println(c);中会调用c中的.toString(),但ArrayList类没有重写.toString(),则会向其父类AbstractList找是否重写了.toString(),一找还没找到,就又向AbstractList的父类找是否生写了该方法。结果一看,AbstractCollection重写了.toString(),OK,总算找到了,那么就调用即可。

那么为什么会输出的格式如上图所示呢,即呢?那就再查看一下重写的.toString()方法是怎么样重写的吧!

public String toString()
返回此 collection 的字符串表示形式。该字符串表示形式由 collection 元素的列表组成,这些元素按其迭代器返回的顺序排列,并用方括号 ( "[]") 括起来。相邻元素由字符 ", "(逗号加空格)分隔。通过 String.valueOf(Object) 可以将元素转换成字符串。

OK,关于容器的.toString()总算是一知半解了呀,嘻嘻……

二:

public class TestCollection {

public static void main(String[] args) {
  Collection c = new ArrayList();
  c.add("hello");
  c.add(new Integer(100));
  System.out.println(c);
}

}

在DOS下javac该代码段时,会出现提醒

这是因为JDK1.5中引进了泛型,但是你的ArrayList却没有采用,所有会有安全问题。

用1.5版本的JDK编译才会出现这种问题,运行是没有问题的,主要是编译会出警告而已。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值