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,然后它报告它为多余的转换。
我想将它作为单个对象传递。
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。
| 归档时间: |
|
| 查看次数: |
280 次 |
| 最近记录: |