转载:跳转
简单介绍:
1、项目中一般都需要打印日志,所有实体的toString()方法都是用简单的"+",因为每"+" 一个就会 new 一个 String 对象,这样如果系统内存小的话会暴内存。使用ToStringBuilder就可以避免暴内存这种问题。
ToStringBuilder的reflectionToString方法:
logger.info("请求数据:"+ToStringBuilder.reflectionToString(req));
2、ToStringBuilder在包 common-lang 中,主要用于一个类的格式化输出。ToStringBuilder类中的append方法可以向该类添加基本类型、数组和对象 ,只有添加的方法才会被toString方法输出。
ToStringStyle类则是对输出的内容进行格式化。
使用例子:
package test;
public class User {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
下面是ToStringBuilder的使用方法
System.out.println("-------------ToStringBuilder-------------------------");
User u = new User();
u.setAge(25);
u.setName("zhengtian");
//对象及其属性一行显示
System.out.println(ToStringBuilder.reflectionToString(u));
System.out.println(ToStringBuilder.reflectionToString(u, ToStringStyle.DEFAULT_STYLE));
//属性换行显示
System.out.println(ToStringBuilder.reflectionToString(u, ToStringStyle.MULTI_LINE_STYLE));
//不显示属性名,只显示属性值,在同一行显示
System.out.println(ToStringBuilder.reflectionToString(u, ToStringStyle.NO_FIELD_NAMES_STYLE));
//对象名称简写
System.out.println(ToStringBuilder.reflectionToString(u, ToStringStyle.SHORT_PREFIX_STYLE));
//只显示属性
System.out.println(ToStringBuilder.reflectionToString(u, ToStringStyle.SIMPLE_STYLE));
结果显示:
-------------ToStringBuilder-------------------------
test.User@141d683[name=zhengtian,age=25]
test.User@141d683[name=zhengtian,age=25]
test.User@141d683[
name=zhengtian
age=25
]
test.User@141d683[zhengtian,25]
User[name=zhengtian,age=25]
zhengtian,25
描述:ToStringBuilder比较适合在打日志时,输出参数的信息,特别是在参数为对象时,该工具类能够很方便的自动打印对象中的属性值
maven包引入:
1 <dependency> 2 <groupId>org.apache.commons</groupId> 3 <artifactId>commons-lang3</artifactId> 4 <version>3.4</version> 5 </dependency>