将 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
.
我有一个具有可变参数的方法。它看起来像这样:
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
.