Java如何使用ReflectionToStringBuilder类?
实施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>