在java中迭代静态数组而不使用数组变量

在java中迭代静态数组而不使用数组变量,java,arrays,foreach,iteration,array-initialization,Java,Arrays,Foreach,Iteration,Array Initialization,在Ruby中,我可以执行以下操作: ["FOO", "BAR"].each do { |str| puts str } 在使用它的语句中定义的数组上迭代。因为我可以用Java定义数组,比如: String[] array = { "FOO", "BAR" }; 我知道我可以通过设置如下循环来避免定义变量: for (String str : new String[] { "FOO", "BAR" }) { ... } 但是,我希望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来说,这是一个更简洁的解决方案,或者说是我唯一的选择吗?

您所能做的就是

    for(String s : Arrays.asList("a", "b")) {
        System.out.println(s);
    }
java.util.array
给出了一个方法
asList(…)
,它是一个var-arg方法,可以用来动态创建
List
(它是动态数组)


通过这种方式,您可以在同一语句中对数组进行声明迭代

像Java这样的语言与像Ruby这样的简洁语言相比,是极其冗长的。在我看来,你已经拥有的是你最好的选择:

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

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

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

这使用了新的包和。

我想你的问题是关于集合的语法糖。然而,在Java8中,您可以说


Arrays.asList(“a”、“b”).forEach(System.out::println);


当然,您可以替换与
消费者兼容的自己的方法文本

好问题。看看是否有更简单的方法来定义文字数据结构会很有趣。在浏览时发现了这个(几乎相同的)问题:谢谢——我想Java8可能会添加类似的东西。