【发布时间】:2019-01-22 08:07:16
【问题描述】:
我想输出对象中变量的所有值。
目前我正在使用ReflectionToStringBuilder,但问题是它在输出集合时包含[,] 字符。
这是一个例子。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
public class Test
{
public int x = 10;
public int y = 20;
public String example = "This is some text, with a comma";
public Collection<Integer> collection = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
public static void main(String args[])
{
System.out.println(ReflectionToStringBuilder.toString(new Test(),
ToStringStyle.NO_FIELD_NAMES_STYLE));
}
}
输出
Test@efb78af[10,20,This is some text, with a comma,[1, 2, 3, 4, 5]]
我尝试定义自己的ToStringStyle,但似乎没有任何选项可以删除方括号和逗号。
import org.apache.commons.lang3.builder.ToStringStyle;
public class ValueOnlyToStringStyle extends ToStringStyle
{
public static final ToStringStyle VALUE_ONLY = new ValueOnlyToStringStyle();
private static final long serialVersionUID = 1L;
private ValueOnlyToStringStyle()
{
super();
this.setContentStart("");
this.setFieldSeparator(" ");
this.setFieldSeparatorAtStart(true);
this.setContentEnd("");
this.setUseClassName(false);
this.setUseFieldNames(false);
this.setArrayContentDetail(true);
this.setArrayStart(" ");
this.setArrayEnd(" ");
this.setArraySeparator(" ");
this.setDefaultFullDetail(true);
this.setNullText("");
this.setSizeStartText("");
this.setSizeStartText("");
this.setFieldNameValueSeparator(" ");
this.setUseShortClassName(false);
this.setUseIdentityHashCode(false);
this.setSummaryObjectStartText(" ");
this.setSummaryObjectEndText(" ");
}
}
输出
10 20 This is some text, with a comma [1, 2, 3, 4, 5]
我需要的是只获取没有添加字符的值。
10 20 This is some text, with a comma 1 2 3 4 5
如何做到这一点?
【问题讨论】:
-
[1, 2, 3, 4, 5]是ArrayList::toString引起的,与ToStringStyle无关。 -
这可能是个问题。有什么方法可以用
ToStringStyle实现我想要的吗?它需要输出我为集合显示的方式。 -
我不熟悉
ToStringStyle,也许你可以覆盖appendDetail(StringBuffer buffer, String fieldName, Collection<?> coll)。 -
嗯,您可能正在做某事。我会试一试,然后回复你。
标签: java apache-commons apache-commons-lang apache-commons-lang3