【问题标题】:Java, most efficient way to pass String array as Method Parameter [duplicate]Java,将字符串数组作为方法参数传递的最有效方法[重复]
【发布时间】:2023-03-03 12:47:01
【问题描述】:

我有以下代码

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


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

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

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

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

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

【问题讨论】:

标签: java arrays


【解决方案1】:

试试

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

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

java 不像 php ;)

【讨论】:

    【解决方案2】:

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

    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(", ?");
    }
    

    【讨论】:

    • 有 3 个“。”在 String 之后,因为我有 3 个字符串?
    • 并且 varargs 参数必须是方法的最后一个参数吗?这是好奇心,因为原始问题未涵盖。
    • 不,句点数与Strings数无关。这是可变参数的语法。是的,可变参数参数必须放在最后。
    • @djc391 不,没有三个点,因为有三个字符串。您可以传递任意数量的字符串。见Varargs
    • @djc391 2004 年的 Java 5.0。
    【解决方案3】:

    如果你使用:

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

    那么 java 不知道你想要一个 String 还是 Object 的数组。你可以明确告诉java它是什么样的数组是这样的:

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

    这样,Java 可以判断您的意思是 String 的数组。

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-04-30
        • 2014-03-03
        • 1970-01-01
        • 2014-04-22
        • 2012-10-29
        • 2022-01-22
        • 2013-07-01
        • 2014-03-25
        • 1970-01-01
        相关资源
        最近更新 更多