apache.commons.lang 包下面有个小清新的工具
包package org.apache.commons.lang.builder
项目中一般都需要打印日志,所有实体的toString()方法都可以使用者两个类来进行重写。
主要是 ToStringBuilder 的静态方法
public static String reflectionToString(Object object, ToStringStyle style) {
return ReflectionToStringBuilder.toString(object, style);
}
ReflectionToStringBuilder主要是通过java 反射实现的属性拼接。
public static String toString(Object object, ToStringStyle style, boolean outputTransients, boolean outputStatics,
Class reflectUpToClass) {
return new ReflectionToStringBuilder(object, style, null, reflectUpToClass, outputTransients, outputStatics)
.toString();
}
public String toString() {
if (this.getObject() == null) {
return this.getStyle().getNullText();
}
Class clazz = this.getObject().getClass();
this.appendFieldsIn(clazz);
while (clazz.getSuperclass() != null && clazz != this.getUpToClass()) {
clazz = clazz.getSuperclass();
this.appendFieldsIn(clazz);
}
return super.toString();
}
其中参数 ToStringStyle 是个抽象类,定义了输出的格式 主要是 append了一类类信息到字符串上,可以自己继承ToStringStyle 实现自定义的输出格式 canal源码中有 自己的实现
可以参照这几个类实现自得是 ToStringStyle