在没有数组变量的情况下对java中的静态数组进行迭代



在Ruby中,我可以做一些类似的事情:

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

在我使用的语句中定义的数组上迭代

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

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

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

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

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

这是我所缺少的更简洁的Java解决方案,还是我所拥有的解决方案是我唯一的选择?

你能做的最好的事情就是

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

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

通过这种方式,您可以声明在同一语句

中的数组上迭代

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

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

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

与Ruby等简洁的语言相比,Java等语言非常冗长。在我看来,你已经拥有的是你最好的选择:

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

我认为您的问题是关于集合的语法糖。然而,在Java 8中,你可以说

Arrays.asList("a", "b").forEach(System.out::println);

在这里,您当然可以替换与Consumer<T>兼容的自己的方法文字。

相关内容

  • 没有找到相关文章