Java 如何在类中支持println?

Java 如何在类中支持println?,java,println,Java,Println,我自己制作的类需要支持什么才能打印它?例如,我有: public class A { ... } 类A应该有哪些方法来使此代码工作?也许是这样的: public static void main() { A a = new A(); System.out.println(a); } 我猜测toString()方法必须重载。我说得对吗?这就足够了吗?您需要为此提供方法覆盖: public class A { @Override public String toS

我自己制作的类需要支持什么才能打印它?例如,我有:

public class A {
...
}
A
应该有哪些方法来使此代码工作?也许是这样的:

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

我猜测
toString()
方法必须重载。我说得对吗?这就足够了吗?

您需要为此提供方法覆盖:

public class A {
    @Override
    public String toString() {
        return "A";
    }
}
该方法返回对象的字符串表示形式。通常,toString方法返回一个“文本表示”此对象的字符串


您需要实现
toString()
方法。您从中返回的所有内容都将被打印。

您可以使用打印机打印任何对象。println的这个重载版本将打印出对象的
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
类的默认实现,其形式如下(类名和实例哈希代码的十六进制表示):

好处:如果您需要从多个字段创建
toString()
实现,那么有一些工具可以让它变得更简单。例如,Commons Lang.或IntelliJ IDEA等Java IDE甚至提供基于类的字段为您生成
toString

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