Java数组作为参数

9

你可以将一个新的数组作为方法参数传递,并且在这个数组中保留数据吗?

例如,我有这个方法:foo(String[]),我想像这样调用它:foo(new String[] s = {"String1", "String2"})。但这不是有效的Java代码。

5个回答

18

这是一种“有效的Java方式”(即,它可以编译并实现您想要的功能):

foo(new String[] {"String1", "String2"});

如果您有机会更改此方法,那么您也可以考虑将该方法更改为接受varargs参数:

public void foo(String... strings) {
    // ...
}

然后您就可以按如下方式使用它,无需显式创建数组:

foo("String1", "String2");

接下来的也是有效的:

foo("String1");

foo("String1", "String2", "String3");

以及更多。


如何获取值呢? - Jonathan

4
如果你想创建一个本地变量 s 并将其保留,那么不,你不能在方法调用内部声明变量。你必须先在调用外部声明它:
String[] s = {"String1", "String2"};
foo(s);

你可以在调用中初始化s,但我不认为有任何理由这样做,而且看起来很糟糕:

String[] s;
foo(s = new String[] {"String1", "String2"});

3
如果你只想传递值,不再需要变量 s,可以像这样操作:
foo(new String[] {"String1", "String2"});

0

你不能声明一个变量,但是你可以传递一个数组:

foo(new String[] { "String1", "String2" });

如果您想在后面引用同一个数组,那么您需要在调用之前声明它。

0

你可以直接这样做:foo(new String[]{"String1", "String2"})


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接