我怎样才能在课堂上支持println?

D3m*_*god 3 java println

我自己制作的课程需要支持哪些println()才能打印出来?例如,我有:

public class A {
...
}
Run Code Online (Sandbox Code Playgroud)

应该使用哪些方法A使此代码有效?也许是这样的:

public static void main() {
    A a = new A();
    System.out.println(a);
}
Run Code Online (Sandbox Code Playgroud)

我猜这个toString()方法必须重载.我对吗?这够了吗?

Boh*_*rdt 9

您可以使用打印任何对象System.out.println(Object).这个重载版本的println将打印出toString对象的表示.如果要自定义要打印的内容,则必须覆盖该Object#toString()方法,例如:

public class A {
    private String foo;

    @Override
    public String toString() {
        // When you print out instance of A, value of its foo
        // field will be printed out
        return foo;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果不覆盖该Object#toString()方法,Object将使用类的默认实现,它具有此形式(类名和实例哈希代码的十六进制表示):

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
Run Code Online (Sandbox Code Playgroud)

额外奖励:如果您需要toString()从多个字段创建实现,可以使用工具使其更容易.例如ToStringBuilder来自Commons Lang.或者像IntelliJ IDEA这样的Java IDE甚至可以toString根据类的字段为您生成.