什么是我自己做的类需要以支持println()
来打印呢? 例如,我有:
public class A {
...
}
应类什么方法A
不得不作出此代码的工作? 也许是这样的:
public static void main() {
A a = new A();
System.out.println(a);
}
我有一个猜测, toString()
方法必须被重载。 我对吗? 这够了吗?
什么是我自己做的类需要以支持println()
来打印呢? 例如,我有:
public class A {
...
}
应类什么方法A
不得不作出此代码的工作? 也许是这样的:
public static void main() {
A a = new A();
System.out.println(a);
}
我有一个猜测, toString()
方法必须被重载。 我对吗? 这够了吗?
您可以打印使用任何对象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()
来自多个领域的实施,有工具,使其更容易。 例如ToStringBuilder
从下议院郎。 或者一些的Java IDE像IntelliJ IDEA的甚至提供生成toString
基于类的田地给你。
您需要提供的覆盖toString()
这个方法:
public class A {
@Override
public String toString() {
return "A";
}
}
该方法返回该对象的字符串表示。 通常,toString方法返回一个字符串,“文本方式表示”该对象。
你需要实现toString()
方法。 你从它返回一切都将被打印出来。