Java,将String数组作为Method Parameter传递的最有效方法

Dan*_*SFT 10 java arrays

我有以下代码

String[] args = {"a", "b", "c"};
method(args);


private void method(String[] args){
    return args;
}
Run Code Online (Sandbox Code Playgroud)

为什么我不能没有错误地执行以下操作?

method({"a", "b", "c"});
Run Code Online (Sandbox Code Playgroud)

这段代码只是为了证明这一点,而不是我使用的实际方法.我想做第二种方法来清理我的代码,并且当我只使用它们一次传递给我的方法时,避免声明十几个不同的数组.

问题的核心是将字符串数组作为方法参数传递的最有效方法是什么.

bas*_*bas 16

尝试

method(new String[]{ "a", "b", "c"});
Run Code Online (Sandbox Code Playgroud)

这样系统就知道它是一个新的字符串数组.

java不像php;)


Pet*_*rey 6

我怀疑你想使用varargs.您甚至不需要创建一个数组来发送可变长度参数.

String[] strings = method("a", "b", "c");

private String[] method(String... args){
    return args;
}
Run Code Online (Sandbox Code Playgroud)

要么

String[] strings = array("a", "b", "c");

private <T> T[] array(T... args){
    return args;
}
Run Code Online (Sandbox Code Playgroud)

或者如果你想进一步浓缩

String[] strings = array("a, b, c");

private String[] array(String args){
    return args.split(", ?");
}
Run Code Online (Sandbox Code Playgroud)


tbo*_*odt 6

如果您使用:

method({ "a", "b", "c"});
Run Code Online (Sandbox Code Playgroud)

然后java不知道你是否想要一个String或多个数组Object.你可以明确地告诉java它是什么样的数组:

method(new String[] { "a", "b", "c"});
Run Code Online (Sandbox Code Playgroud)

这样Java就可以说你的意思是一个数组String.