奇怪的Apache Commons Lang StringUtils.join结果

时间:2013-12-23 17:32:21

标签: java list hex apache-commons

我从Apache Commons Lang的StringUtils.join得到了奇怪的结果。假设我有:

List<String> values = new LinkedList<>();

values.add("120");
values.add("123456789");
values.add("9000");
values.add("en");

byte[] data = StringUtils.join(values, new char[] {1}).getBytes();

我希望31323001313233343536373839013930303001656e120.123456789.9000.en.0x01。但令我困惑的是我得到了 而是5b3132302c203132333435363738392c20393030302c20656e5d5b4340333664303437,转换为[120, 123456789, 9000, en][C@36d047。在我这样做的方式中是否存在导致奇怪价值的问题?

1 个答案:

答案 0 :(得分:1)

您使用以下方法:

public static <T> String join(T... elements)
  

将提供的数组的元素连接到包含提供的元素列表的单个String中。

     

未在连接的String中添加分隔符。数组中的空对象或空字符串由空字符串表示。

因此,此方法在字符串列表和char数组上调用toString(),并加入结果。

您希望将char或String分隔符作为第二个参数传递:

StringUtils.join(values, '.').getBytes();