我自己制作的课程需要支持哪些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()方法必须重载.我对吗?这够了吗?
您可以使用打印任何对象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根据类的字段为您生成.