在java中迭代静态数组,不带数组变量

在 Ruby 中,我可以做这样的事情:

["FOO", "BAR"].each do { |str| puts str }

迭代我在使用它的语句中定义的数组。由于我可以在Java中定义一个数组,例如:

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

我知道我可以通过设置一个循环来避免定义变量,例如:

for (String str : new String[] { "FOO", "BAR" }) { ... }

但是,我希望java可能有一些更简洁的东西,而不首先定义一个包含数组的变量,并且还允许我避免动态分配,是否有这样的语法:

for (String str : { "FOO", "BAR" }) { ... }

这是更简洁的,可以与我缺少的Java一起使用,还是我拥有的解决方案超出了我唯一的选择?


答案 1

你能做的最好的事情就是

    for(String s : Arrays.asList("a", "b")) {
        System.out.println(s);
    }

java.util.Arrays给出了一个var-arg方法,它可以用来动态创建(这是动态数组)。asList(...)List

通过这种方式,您可以在同一语句中声明循环访问数组


答案 2

在 Java 8 中,您将能够执行以下操作:

Stream.of("FOO", "BAR").forEach(s -> System.out.println(s));

这使用新的 java.util.stream 包和 lambda 表达式