我有一个很大的模型类,我想为此模型创建一个toString方法。但是此模型有很多领域,因此我尝试使用Common模型和Java反射。但是输出是include子模型字段名称,是否可以删除它?
我有1个抽象模型类,如下所示:
import java.lang.reflect.*;
public abstract class CommonEntity {
public String getInsertString() {
StringBuilder sb = new StringBuilder();
try {
Field[] fields = this.getClass().getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
Object value = field.get(this);
if (value != null) {
sb.append("\"" + value.toString() + "\",");
}
}
} catch (Exception e) {
System.out.println(e);
}
return sb.toString();
}
}
另外2个模型扩展了这一通用性
测试:
@Data
public class test extends CommonEntity {
private String name;
private String last;
private test2 test;
}
test2:
@Data
public class test2 extends CommonEntity {
private String name2;
private String last2;
}
主要班级:
public static void main(String[] args) {
test a = new test();
a.setName("1");
a.setLast("2");
test2 b = new test2();
b.setLast2("3");
b.setName2("4");
a.setTest(b);
System.out.println(a.getInsertString());
}
控制台输出:
"1","2","test2(name2=4, last2=3)",
我的期望:
"1","2","4","3,
是否可以删除
test2(name2
和
last2
输出。
答案 0 :(得分:0)
输出的那部分来自lombok's @Data
自动生成的toString
。如果您不想要它,请实现自己的toString
函数。
但是我对此实现方式有疑问,结果字符串表示形式的预期用途是什么?从您的措辞来看,我担心您打算将其用作SQL查询的一部分,这是不明智的。