如何使用内联声明传递数组参数?

时间:2017-03-15 05:21:31

标签: java

我有一个方法

private void show(Object[] arr) {
  for (Object o : arr) {
    System.out.println(o);
  }
}

我想将此方法称为

// belows are not valid but I'd like to achieve 
show({1,2,3});
show(new String["a","b","c"])

但我不想创建一个数组来调用此方法。 (请不要建议更改我的 show 方法的签名。这只是一个示例。我使用的实际方法来自第三方库。)

如何通过实用程序类或其他任何方法实现此目的?

4 个答案:

答案 0 :(得分:3)

创建varargs包装器方法:

private void myShow(Object... arr){
    show(arr);
}

// No change to your existing 3rd party method:
private void show(Object[] arr) {
  for (Object o : arr) {
    System.out.println(o);
  }
}

然后您可以像这样调用包装器方法:

myShow("a","b","c");
myShow(1,2,3,4);

希望这有帮助!

答案 1 :(得分:2)

您可以使用评论中提到的varargs或以这种方式声明数组:

show(new String[] {"a","b","c"})

答案 2 :(得分:1)

您正在寻找的不是将数组传递给方法而不声明它的方法,您正在寻找“数组的单行数据实例”......或者通过真实名称“在线声明”

show(new Object[]{"a","b","c"});

答案 3 :(得分:0)

您可以使用varargs完成此操作。对函数进行简单编辑不仅可以允许一组对象,还可以让您完成所需的任务。

而不是使用Object[]使用Object...