关于在类(数据类或POJO)中重写toString()方法并调用list.toString()的困惑?

问题描述 投票:1回答:1

我有这种实现方式

static class InnerClassStudent{
        String name;
        int age;

        InnerClassStudent(String name,int age){
            this.name = name;
            this.age = age;
        }


        @Override
        public String toString() {
            return "name :" + name + "," + "age: " + age;
        }
    }

然后创建,添加并打印列表中的项目。

List<InnerClassStudent> listOfInnerClassStudent = new ArrayList<InnerClassStudent>();

//add items

//print items
 System.out.println("InnerClasslist : " + listOfInnerClassStudent.toString());

然后输出是

InnerClasslist : [name :Mr.B,age: 21, name :Mr.Y,age: 19, name :Mr.C,age: 30]

所以,在这里,我对toString()方法有些困惑。我正在调用list.toString(),这意味着toString()需要是List类或其父类内部的函数。

因此,它的实际实现在Object.java

  public String toString() {
        return this.getClass().getName() + "@" + Integer.toHexString(this.hashCode());
    }

所以,我的问题和困惑是,当我Override所需类中的toString()时,它们如何一起工作以打印Overridden toString()中相应提及的项目列表方法。

我希望我已经清楚地阐明了我的问题。谢谢。

java list class tostring
1个回答
0
投票

[ArrayList具有从toString继承的toString自己的实现,

AbstractCollection
© www.soinside.com 2019 - 2024. All rights reserved.