java - toString 方法中应该包含什么,不应该包含什么?

标签 java tostring

<分区>

    public String toString() {
        String info = "";
        String courseInfo = this.getCourseInfo();
        if("".equals(courseInfo)) {
            courseInfo = "None";
        }

        info += "--------------------------------------------------\n";
        info += "Student Name: " + this.name + "\n";
        info += "Student Address: " + this.address + "\n"; 
        info += "Student #: " + this.studentNumber + "\n";
        info += "Student Login ID: " + this.loginID + "\n";
        info += "Courses taken:" + "\n";
        info += courseInfo + "\n";
        info += "GPA: " + this.getGPA() + "\n";
        info += "--------------------------------------------------\n";

        return info;
    }

有人告诉我,这是一个糟糕的 toString 方法,因为它应该在一行上输出诊断信息,或者如果有意义的话,输出单个文字值。我真的不明白。我应该只打印所有实例变量并让用户决定它是什么吗?

最佳答案

问题是这个 toString 会产生一大块代码。可以说它叫做学生。如果你想记录:

Student X linked to student Y because of Z.

然后 X 和 Y 会变得很大,整行会被分割开来,无法阅读。

您可能有一个“toFullDescription”或一些看起来像您当前的 toString 的方法,但 toString 应该只有一些有意义的元素,可能只是花括号内的名称和 Id。

关于java - toString 方法中应该包含什么,不应该包含什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21516303/

相关文章:

javascript - 为什么在 javascript 中不调用覆盖的 toString()

java - antlr4/java : pretty print parse tree to stdout

java - 有2个toString方法吗?

java - 字符串性能-内存

Java - 通过 TCP 传递对象的 ArrayList

java - 如何打印我的 Java 对象而不得到 "SomeType@2f92e0f4"?

java - 什么时候调用 spring beans 销毁方法?

java - 我如何使用 MEL 作为调用的方法参数创建静态字符串数组

vb.net:覆盖枚举的 toString 方法

java - 继承 - 从 Employee 类创建 Commission Employee 类并进行测试