如何向函数传递一个数组字面量?

10

如何传递数组而不使其成为单独的变量?例如,我知道这样可以:

class Test{
    public static void main(String[] args){
        String[] arbitraryStrings={"foo"};
        takesStringArray(arbitraryStrings);
    }
    public static void takesStringArray(String[] argument){
        System.out.println(argument);
    }
}

但是我不想把数组变成一个变量,因为它只在这里使用。有没有办法做到像这样:

class Test{
    public static void main(String[] args){
        takesStringArray({"foo"});
    }
    public static void takesStringArray(String[] argument){
        System.out.println(argument);
    }
}

2
可能是重复的问题:将数组初始化程序直接传递给方法参数不起作用 - Rohit Jain
考虑一下看看Groovy:http://groovy.codehaus.org/。在Groovy中,你可以随时定义列表字面量。太棒了! - Ian Durkan
6个回答

26

{"foo"} 不能告诉Java你想创建什么类型的数组...

相反,尝试这样做...

takesStringArray(new String[] {"foo"});

2
你可以使用 new 创建一个数组,而不需要 新变量
正确的语法应该是:
  takesStringArray(new String[]{"foo"});

看起来你刚开始接触数组。声明数组的语法有很多种。


2
class Test {
    public static void main(String[] args) {
        takesStringArray(new String[]{"foo"});
    }

    public static void takesStringArray(String[] argument) {
        System.out.println(argument);
    }
}

1
使用“内联”数组声明
尝试
takesStringArray(new String[]{"foo"});

0

你可以尝试使用VarArgs

class Test{
    public static void main(String[] args){
        takesStringArray("foo", "bar");
    }
    public static void takesStringArray(String... argument){
        System.out.println(argument);
    }
}

0

您可以使用可变参数:

class Test {
    public static void main(String[] args) {
        takesStringArray("foo");
    }

    public static void takesStringArray(String... argument) {
        System.out.println(argument);
    }  
}

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