class Employee
{
String name ;
// Constructor
Employee(String name) {
this.name = name;
}
// override toString method in Employee class
@Override
public String toString() {
return name;
}
}
public class TestArraylistIterator {
public static void main(String[] args) {
Employee obj1 = new Employee("Java");
Employee obj2 = new Employee("Microsoft");
TestArraylistIterator obj3 = new TestArraylistIterator();
List ls = new ArrayList();
ls.add(obj1);
ls.add(obj2);
System.out.println("List object :: " + ls);
System.out.println("TestArraylistIterator :: " + obj3);
}
}
output :
List object :: [Java, Microsoft]
TestArraylistIterator :: TestArraylistIterator@ad3ba4
所以问题是:如果我们尝试打印任何对象,它会打印obj.getClass()+" @" + obj.hashCode()。但是在打印列表对象时,它不会以相同的方式打印列表对象。相反,看起来toString()已经在ArrayList类中被重写。但是在ArrayList API实现中没有找到这样的东西。任何建议都是受欢迎的..
答案 0 :(得分:5)
不,但它在AbstractCollection
中被覆盖,ArrayList
是。{/ p>的间接子类。
供将来参考:在查看Java API文档时,在方法摘要下,可以有几个“从类SomeClass继承的方法”部分。在documentation for ArrayList
中,它显示toString()
是从AbstractCollection
继承的。
答案 1 :(得分:0)
该方法被覆盖。如果您反编译rt.jar(虽然您不必正常执行此操作),您将看到如下内容:
public String toString() {
Iterator localIterator = iterator();
if (!localIterator.hasNext()) {
return "[]";
}
StringBuilder localStringBuilder = new StringBuilder();
localStringBuilder.append('[');
for (;;) {
Object localObject = localIterator.next();
localStringBuilder.append(localObject == this ? "(this Collection)" : localObject);
if (!localIterator.hasNext()) {
return ']';
}
localStringBuilder.append(',').append(' ');
}
}