如何在类中支持println?

6
我的自定义类需要支持哪些内容,以便println()打印它?例如,我有以下代码:
public class A {
...
}

为了使这段代码正常工作,类 A 应该具备哪些方法?也许像这样:

public static void main() {
    A a = new A();
    System.out.println(a);
}

我猜测toString()方法必须被重载了。我的猜测正确吗?这样做足够了吗?

3个回答

12
你可以使用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;
    }
}

如果您不覆盖Object#toString()方法,则将使用来自Object类的默认实现,其形式为(类名和实例哈希码的十六进制表示):

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

额外福利:如果您需要从多个字段创建toString()实现,有一些工具可以让它变得更容易。例如,来自Commons Lang的ToStringBuilder,或者像IntelliJ IDEA这样的一些Java IDE甚至会基于类的字段为您生成toString


3

您需要提供一个toString()方法的重写来完成此操作:

public class A {
    @Override
    public String toString() {
        return "A";
    }
}

该方法返回对象的字符串表示形式。通常,toString方法返回一个字符串,该字符串“文本表示”此对象。

0
你需要实现 toString() 方法。你从中返回的任何东西都将被打印出来。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接