我自己制作的类需要支持什么才能println()
打印它?例如,我有:
public class A {
...
}
应该对哪些方法进行分类A
必须让这段代码工作吗?也许是这样的:
public static void main() {
A a = new A();
System.out.println(a);
}
我有一个猜测toString()
方法必须重载。我对吗?这够了吗?
您可以使用打印任何对象System.out.println(Object) http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html#println%28java.lang.Object%29。这个 println 的重载版本将打印出来toString
您的对象的表示。如果您想自定义打印内容,则必须覆盖Object#toString() http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#toString%28%29方法,例如:
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());
}
Bonus:如果你需要创建toString()
从多个领域实施,有一些工具可以使其变得更容易。例如ToStringBuilder http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/builder/ToStringBuilder.html来自Commons Lang。或者某些 Java IDE(例如 IntelliJ IDEA)甚至提供生成toString
根据班级的领域为您提供帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)