有一个具有以下签名的方法:
public static String concatAndSeperate(Object seperator, Object... obj)
该方法的目的是用 obj 的条目之间的分隔符连接 obj 中的对象。
现在我有一个 int 数组,由于严重的副作用,我无法修改它。
int[] numbers = new int[] {1, 2, 3, 4, 5, 6, 7};
我想将这些数字用于 SQL IN 语句:
SELECT * FROM quux WHERE id IN (1, 2, 3, 4, 5, 6, 7);
所以我尝试用我漂亮的小方法连接它:
concatAndSeperate(", ", numbers);
当然,这是行不通的,因为 numbers 是一个整数数组,而不是一个整数数组。所以我尝试用它制作一个整数数组:
concatAndSeperate(", ", Arrays.asList(numbers).toArray(new Integer[numbers.length]);
这会导致一个我不明白的错误:
Exception in thread "main" java.lang.ArrayStoreException
at java.lang.System.arraycopy(Native Method)
at java.util.Arrays.copyOf(Unknown Source)
at java.util.Arrays$ArrayList.toArray(Unknown Source)
at mystuff.MyClass.main(MyClass.java:415)
最佳答案
您可以使用 commons-lang 为您完成将原语转换为包装器数组的工作(参见 ArrayUtils.toObject(int[]):
concatAndSeparate(", ", ArrayUtils.toObject(numbers));
但是,是否有理由不将数字存储为
Integer numbers = new Integer[] { 1, 2, 3, 4, 5, 6 };
关于Java:使用 int 数组调用 Object vararg 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17522334/