10

我有以下代码

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


private void method(String[] args){
    return args;
}

为什么我不能在没有错误的情况下执行以下操作?

method({"a", "b", "c"});

此代码只是为了证明这一点的示例,而不是我使用的实际方法。我想使用第二种方法来清理我的代码,并避免在我只使用一次传递给我的方法时声明十几个不同的数组。

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

4

4 回答 4

16

尝试

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

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

java 不像 php ;)

于 2013-07-30T07:30:04.380 回答
7

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

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

private String[] method(String... args){
    return args;
}

或者

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

private <T> T[] array(T... args){
    return args;
}

或者如果你想进一步浓缩

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

private String[] array(String args){
    return args.split(", ?");
}
于 2013-07-30T07:34:56.507 回答
6

如果您使用:

method({ "a", "b", "c"});

那么 java 不知道你是否想要一个数组StringObject. 你可以明确地告诉java它是什么样的数组是这样的:

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

这样 Java 就可以判断出你的意思是一个String.

于 2013-07-30T07:37:10.090 回答
2

您不需要对数组的命名引用。您可以像这样初始化并传递一个匿名数组:

method (new String[]{"a", "b"});
于 2013-07-30T07:31:53.473 回答