java开发中你可能需展示类的属性值,把对象记录为日志,调试输出等操作。ToStringBuilder提供简便类转字符串写法。
代码如下,这里采用的是lombok插件,也可以使用该插件自带的ToString()方法,根据需求自己定夺。
导入依赖:
<!--小辣椒 https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<scope>provided</scope>
</dependency>
<!-- 使用ToStringBuilder必须使用下面这个依赖 https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
package com.lyj.demo.pojo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Student {
private Long id;
private String studentName;
private Integer age;
private Date birth;
private Date registerTime;
private Date lastUpdateTime;
public Student(Long id, String name, Integer age) {
this.id = id;
this.studentName = name;
this.age = age;
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
// return JacksonUtil.toJson(this);
}
public static void main(String[] args){
Student aa = new Student(1L, "aa", 23);
System.out.println(aa.toString());
System.out.println(aa);
}
}
运行截图如下:
以上采用的是ToStringBuilder默认的格式化方式,基本可以满足开发的需求,ToStringBuilder还有其他的格式,如下所示,
ToStringBuilder的风格
public abstract class ToStringStyle implements Serializable {
private static final long serialVersionUID = -2587890625525655916L;
public static final ToStringStyle DEFAULT_STYLE = new ToStringStyle.DefaultToStringStyle();
public static final ToStringStyle MULTI_LINE_STYLE = new ToStringStyle.MultiLineToStringStyle();
public static final ToStringStyle NO_FIELD_NAMES_STYLE = new ToStringStyle.NoFieldNameToStringStyle();
public static final ToStringStyle SHORT_PREFIX_STYLE = new ToStringStyle.ShortPrefixToStringStyle();
public static final ToStringStyle SIMPLE_STYLE = new ToStringStyle.SimpleToStringStyle();
...
}
使用方式如下:
@Override
public String toString() {
//return ToStringBuilder.reflectionToString(this);
//return ToStringBuilder.reflectionToString(this, ToStringStyle.DEFAULT_STYLE);
//return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
//return ToStringBuilder.reflectionToString(this, ToStringStyle.NO_FIELD_NAMES_STYLE);
//return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
return ToStringBuilder.reflectionToString(this, ToStringStyle.SIMPLE_STYLE);
}
- 使用DEFAULT_STYLE
com.lyj.demo.User@160877b[id=1,username=weizhixi,password=123456]
- 使用MULTI_LINE_STYLE多行风格
com.lyj.demo.User@160877b[
id=1
username=weizhixi
password=123456
]
- 使用NO_FIELD_NAMES_STYLE 不含字段名风格
com.lyj.demo.User@160877b[1,weizhixi,123456]
- SHORT_PREFIX_STYLE短类名前缀风格
User[id=1,username=weizhixi,password=123456]
- 使用SIMPLE_STYLE简单风格
1,weizhixi,123456