如何在课堂上支持println?
我自己制作的类需要支持什么才能让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
类的默认实现,它具有以下forms(类名和实例哈希码的hex表示):
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
额外奖励:如果您需要从多个字段创建toString()
实现,可以使用工具使其更容易。 例如来自Commons Lang的ToStringBuilder
。 或者像IntelliJ IDEA这样的Java IDE甚至可以根据类的字段为您生成toString
。
您需要为此提供toString()
方法的覆盖:
public class A { @Override public String toString() { return "A"; } }
该方法返回对象的字符串表示forms。 通常,toString方法返回一个“文本表示”此对象的字符串。
您需要实现toString()
方法。 从中返回的所有内容都将被打印出来。
- java:使用深度优先搜索实现8皇后
- 将java.util.HashMap转换为java中的scala.collection.immutable.Map
- 一次性向所有MySQL Select Queries添加一列
- 从舞台上移除演员?
- jndi LDAPS自定义HostnameVerifier和TrustManager
- PortalUtil.getOriginalServletRequest和PortalUtil.getHttpServletRequest有什么区别?
- 如何使用Mockito和JUnit检查方法中的if语句?
- 使用Timeout避免Javamultithreading中的死锁
- 在JavaFX中从PasswordField获取密码的安全方法