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

Passing byte[] as a single parameter to a vararg method

我有一个具有可变参数的方法。它看起来像这样:

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

}

我想将 byte[] 传递给此方法,但作为单个参数。我该怎么做?

byte[] myByteArray = functionReturningAByteArray();

sampleFunction("Name", myByteArray);

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

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

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

一个byte[]是一个原始数组,所以它肯定不是一个Object[]。因此,它将作为单个 Object 实例传递给您的可变参数方法。

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

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

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});

第一次调用打印 1,而第二次调用打印 3.