2016-04-22 4 views
-2

のために強化されずに列挙型の値をループ私が使用している場合、私の列挙リストColorsはループ

のすべての値を通過しようとしています:

for (AnotherClass.Colors color : AnotherClass.Colors.values()) { 
    System.out.println(color); 
} 

私は望ましい結果を得ることができます。これをループするforループを使用する唯一の方法であるかどうかは疑問です。私はこれを通ってループする他の方法はないのですか?

+0

あなたが使っているものは何でも起動し、しばらく遊んでいて、ドキュメントを少し見ていると、あなたが探しているものが与えられているはずです。 –

答えて

2

列挙型のvalues()方法は、配列を返します。あなたは、通常のforループと配列を反復処理したい場合、それは次のようになります。

AnotherClass.Colors[] values = AnotherClass.Colors.values(); 
for (int i = 0; i < values.length; ++i) { 
    System.out.println(values[i]); 
} 

強化forループと列挙型は、両方のJava 1.5で導入されたので、強化forループは常に明白な方法となっていますenum値を反復処理します。

+0

ありがとう!別の配列を作成してから、それを繰り返して、forループを使用したくないと思った。 – Duxa

+0

@APこれは完全に真実ではありません。別の配列を作成する必要はなく、 'values()'によって返された配列を反復処理することができます。 –

+0

@Sнаđошƒаӽ - 伝統的なforループでもできますか?これは、forループで強化されたことが、values()によって返される配列を反復処理しているからです。 – Duxa

1

のJava 8を使用すると、代わりにストリームを使用することができます。

AnotherClass.Colors.values().forEach(color->System.out.println(color));