代码如下:
ArrayList list = new ArrayList();
list.add("AA");
list.add("BB");
Iterator it = list.iterator();
while(it.hasNext()) {
Object obj = it.next();
System.out.println(obj.toString());
}
输出结果为AA BB
it.next()返回类型是Object,在调用toString方法输出的结果不应该是哈希值吗?为什么输出的是字符串???
------解决思路----------------------
lz没能理解面向对象的继承,首先你往list中放的是字符串,然后你取的时候,用Object类型变量去接,即
Object obj = it.next();一般的话如果list中放的对象不是你用来接的那个类的子类或实现类 会出现编译错误的,这里没报错是因为java中Object类是所有类的父类。有的子类重写了父类的toString方法,所以没有输出hashcode。如果你想知道某个类的toString返回的值,你可以看该类源代码或api文档,并不是所有类都会返回hashCode,比如ArrayList。