gpt4 book ai didi

java - 使 ReflectionToStringBuilder 跳过具有空值的字段

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:31:00 28 4
gpt4 key购买 nike

我必须在日志文件中打印对象值。我用过:

ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE, true, true);

但它也会打印我不想包含的空值,例如:

Pojo@117d9a3[id=1,name=null,description=Manchester United,KEY=APP-KEY,secretKey=Alex ]

如何禁止包含空值?

最佳答案

没有子类化的更简单的解决方案是重写 accept 方法:

public String toStringWithAttributes() {

Object myself = this;
ReflectionToStringBuilder builder = new ReflectionToStringBuilder(
this, ToStringStyle.SHORT_PREFIX_STYLE) {

@Override
protected boolean accept(Field field) {
try {
return super.accept(field) && field.get(myself) != null;
} catch (IllegalAccessException e) {
return super.accept(field);
}
}

};

return builder.toString();

}

这有一个额外的好处,您可以使用任何您想要的 ToStringStyle 并且格式在其他方面是完美的。

关于java - 使 ReflectionToStringBuilder 跳过具有空值的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30154041/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com