【问题标题】:String array initialization as constructor parameter [duplicate]字符串数组初始化作为构造函数参数[重复]
【发布时间】:2011-05-25 02:25:44
【问题描述】:

在Java中,用下面的方式初始化一个String数组是完全合法的:

String[] s = {"FOO", "BAR"};

但是,当尝试实例化一个将字符串数组作为参数的类时,不允许使用以下代码:

Test t = new Test({"test"});

但这又可以了:

Test t = new Test(new String[] {"test"});

谁能解释这是为什么?

【问题讨论】:

    标签: java arrays string constructor


    【解决方案1】:
    String[] s = {"FOO", "BAR"};  
    

    这仅在声明时允许

    你不能

    String[] s;
    s={"FOO", "BAR"};  
    

    【讨论】:

      【解决方案2】:

      因为Type[] x = { ... } 是数组的初始化 语法。 { ... } 仅在特定上下文中以特定方式解释。

      【讨论】:

        【解决方案3】:

        如果你想要一个简单的方法来传递一个字符串数组,我建议你使用可变参数

        class Test {
           public Test(String...args);
        }
        
        // same as new Test(new String[] { "test", "one" })
        Test t = new Test("test", "one"); 
        

        【讨论】:

        • 谢谢,但这不是真正的问题,您还假设我们可以修改构造函数。
        • @Herminator 通常可以,但并非总是如此。下一次你会知道你能做什么。
        猜你喜欢
        • 1970-01-01
        • 2013-11-17
        • 2020-03-10
        • 2017-08-16
        • 1970-01-01
        • 2011-03-23
        • 1970-01-01
        • 2015-07-25
        • 2012-04-11
        相关资源
        最近更新 更多