将 byte[] 作为单个参数传递给可变参数方法

Thi*_*ruG 1 java arrays variadic-functions

我有一个方法,它有一个 varargs 参数。它看起来像这样:

public void sampleFunction(String name, Object... args) {

}
Run Code Online (Sandbox Code Playgroud)

我想将 a 传递byte[]给此方法,但作为单个参数。我怎样才能做到这一点?

byte[] myByteArray = functionReturningAByteArray();

sampleFunction("Name", myByteArray);
Run Code Online (Sandbox Code Playgroud)

这会被视为一个数组,还是会myByteArray被视为一个单一的对象?

当我通过时byte[],IntelliJ 将其报告为Confusing primitive array argument to varargs method. 我试图按照它的建议转换myByteArray为 an Object,然后它报告它为多余的转换。

我想将它作为单个对象传递。

Era*_*ran 5

Abyte[]是一个原始数组,所以它绝对不是一个Object[]. 因此,它将作为单个Object实例传递给您的 vararg 方法。

另一方面,如果您要传递一个Byte[]数组,它将作为多个Object参数传递给 vararg 方法。

当然,你可以自己验证一下:

public static void sampleFunction(String name, Object... args) {
    System.out.println (args.length);
}

sampleFunction("x", new byte[] {1,2,3});
sampleFunction("x", new Byte[] {1,2,3});
Run Code Online (Sandbox Code Playgroud)

第一个调用打印1,而第二个调用打印3