【问题标题】:Params in method, Object... VS Object[] , are these two have the same function? [duplicate]方法中的参数, Object... VS Object[] ,这两者是否具有相同的功能? [复制]
【发布时间】:2020-08-18 14:22:50
【问题描述】:

我有一个方法如下:

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...

【问题讨论】:

标签: java


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:
    public IndexRequest source(XContentType xContentType, Object... source) 
    

    在上面的 sn-p 中,Object... source 指的是一个对象数组,但肯定也会接受一个对象,这是因为在内部,JVM 会将那个对象添加到一个数组中。

    在类似的行中,当您将一个列表传递给该方法时,它会将该列表放入一个名为 source 的数组中,因此编译器不会引发错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-08
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 2019-11-23
      • 1970-01-01
      • 2014-02-18
      相关资源
      最近更新 更多