use*_*745 -2 java arrays list variadic-functions
我在java中有一个varargs方法.因此,该方法需要一个Objects 数组.我通过了一个List方法,它工作了!我的意思是,它不仅编译,而且测试是绿色的.所以,我的问题是 - myList.toArray()调用方法时是否需要调用,或者此调用是否自动发生?
提前致谢!
以下是代码:
createSomething(final Object... parameters) {
// varargs method
}
List<Object> data = new ArrayList<Object>();
createSomething(data); // is this wrong?
createSomething(data.toArray()); // should I always do this?
Run Code Online (Sandbox Code Playgroud)
您似乎认为列表被隐式转换为数组,并且该方法是使用包含列表中每个元素的数组调用的.
事实并非如此.实际上,该方法是使用包含单个元素的数组调用的:列表本身.
测试它
private void testVarargs(Object... args) {
System.out.println(args.length);
System.out.println(args[0]);
}
Run Code Online (Sandbox Code Playgroud)
和
List<String> list = Arrays.asList("hello", "world");
testVarargs(list);
Run Code Online (Sandbox Code Playgroud)
结果不会
2
hello
Run Code Online (Sandbox Code Playgroud)
但
1
[hello, world]
Run Code Online (Sandbox Code Playgroud)
这是正常的:你只是将一个对象作为参数传递给方法,恰好是一个List.因此List被包含在一个长度数组中,并且该方法作为参数被调用.
| 归档时间: |
|
| 查看次数: |
793 次 |
| 最近记录: |