实施toString()方法有时可能会成为一个耗时的过程。如果您的班级中有几个字段,那可能没问题,但是当您处理多个字段时,每次新的字段来临时,肯定要花一些时间来更新此方法。
这是ReflectionToStringBuilder可以帮助您自动化实现该toString()方法的过程的类。此类提供一个静态toString()方法,该方法至少使用一个参数,该参数引用要从中生成字符串的对象实例。
我们还可以格式化生成的字符串的结果。在下面的示例中,我们使用a创建to字符串方法,ToStringStyle.MULTI_LINE_STYLE并且如果需要,我们还可以输出瞬态和静态字段,默认情况下将其省略。
package org.nhooo.example.commons.lang; import org.apache.commons.lang3.builder.ReflectionToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; public class ReflectionToStringDemo { private Integer id; private String name; private String description; public static final String KEY = "APP-KEY"; private transient String secretKey; public ReflectionToStringDemo(Integer id, String name, String description, String secretKey) { this.id = id; this.name = name; this.description = description; this.secretKey = secretKey; } @Override public String toString() { // 生成包括瞬态和静态字段的toString。 return ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE, true, true); } public static void main(String[] args) { ReflectionToStringDemo demo = new ReflectionToStringDemo(1, "MANUTD", "Manchester United", "secret**"); System.out.println("Demo = " + demo); } }
上面的代码片段产生的输出是:
Demo = org.nhooo.example.commons.lang.ReflectionToStringDemo@452b3a41[ id=1 name=MANUTD description=Manchester United KEY=APP-KEY secretKey=secret** ]
Maven依赖
<!-- https://search.maven.org/remotecontent?filepath=org/apache/commons/commons-lang3/3.9/commons-lang3-3.9.jar --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.9</version> </dependency>