方法、对象中的参数vs object[],这两个函数是否相同?

n7taea2i  于 2021-07-12  发布在  Java
关注(0)|答案(2)|浏览(231)

这个问题在这里已经有答案了

如何将arraylist传递给varargs方法参数(5个答案)
5个月前关门了。
我有一个方法如下:

public IndexRequest source(XContentType xContentType, Object... source) {
    // some process
}

我知道如何使用它:

new IndexRequest().source(XContentType.JSON, "field", "baz", "fox"));

现在,我想用这个:

List<String> list = new ArrayList(3);
list.add("field");
list.add("baz");
list.add("fox");
new IndexRequest().source(XContentType.JSON, list));

然后,我发现它已经通过了编译器。但我不知道这个函数是否正确。。。
我可以用object[]代替object。。。

jogvjijk

jogvjijk1#

列表和数组是有区别的。最简单的方法是执行以下操作(使用“toarray”方法将列表转换为数组):

List<String> list = new ArrayList(3);
list.add("field");
list.add("baz");
list.add("fox");
new IndexRequest().source(XContentType.JSON, list.toArray()));
i7uq4tfw

i7uq4tfw2#

public IndexRequest source(XContentType xContentType, Object... source)

在上面的片段中, Object... source 引用一个对象数组,但肯定也会接受单个对象,这是因为在内部,jvm会将该对象添加到数组中。
在类似的行中,当您将一个列表传递给该方法时,它会将该列表放入一个名为 source ,因此编译器没有抛出错误。

相关问题