带有二维数组的Java varargs

use*_*407 4 java arrays variadic-functions

问题留在这里,因为人们回答了它,我的问题是我使用的API的版本与我的文档不同步....你实际上可以做到这一点.

有没有办法在Java中使用二维数组作为参数的参数,该参数需要一个数组变量?

我试图打电话的功能是

public Long sadd(final byte[] key, final byte[]... members) {
Run Code Online (Sandbox Code Playgroud)

我有一个2-d字节数组(byte [] [] data = blah)

但是,如果我试着打电话

sadd(key,data);
Run Code Online (Sandbox Code Playgroud)

我得到以下编译器错误:

(实际参数byte [] []不能通过方法调用转换转换为byte []

有没有办法使用二维数组作为数组类型的变量?

sli*_*lim 6

以下适用于我.也许你没有做你认为你在做的事情?

@Test
public void test_varargs() {
   byte[] x = new byte[] { 1, 2, 3};
   byte[] y = new byte[] { 0, 1, 2};
   assertEquals(9L, sum(x,y));
   byte[][] z = new byte[][] { x,y };
   assertEquals(9L, sum(z));
}

public long sum(final byte[]... members) {
   long sum = 0;
   for (byte[] member : members) {
       for (byte x : member) {
         sum += x;
      }
   }
   return sum;
}
Run Code Online (Sandbox Code Playgroud)