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());
}