我想将一些字符串数组合并为一个。我使用了ArrayUtils.addAll(T[], T...)
我在一些答案here上找到的。正如在那里描述的那样,我应该将它转换为String数组。当我尝试这样做时,它会向我显示此错误
无法将
java.io.Serializable
存储在java.lang.String数组中 在org.apache.commons.lang3.ArrayUtils.addAll
我的代码在这里
String[] splitLeft=split(left);
String[] middle=new String[]{with};
String[] splitRight=split(right);
String[] inWords=(String[])ArrayUtils.addAll(splitLeft,middle,splitRight);
问题是什么,我该如何解决?
Ps:with
只是一个字符串。
答案 0 :(得分:3)
这里的问题是the signature of the method是:
addAll(T[] array1, T... array2)
所以第二个和第三个参数被视为array2
的单个元素:它们没有连接;因此,推断类型是Serializable
,它是String
(第一个参数的元素类型)和String[]
(varargs的元素类型)的最小上限。 / p>
相反,如果您要使用ArrayUtils.addAll
进行多次通话,则必须加入他们:
addAll(addAll(splitLeft, middle), splitRight)
或者,您可以在少量语句中构建连接数组:
// Copy splitLeft, allocating extra space.
String[] inWords = Arrays.copyOf(splitLeft, splitLeft.length + 1 + splitRight.length);
// Add the "with" variable, no need to put it in an array first.
inWords[splitLeft.length] = with;
// Copy splitRight into the existing inWords array.
System.arraycopy(splitRight, 0, inWords, splitLength.length + 1, splitRight.length);