2010-03-01 23 views
31

Döngü için özel bir şey denerken, Java'nın her bir döngü için bir kaynak olarak anonim bir diziyi koymasını sevmediğini fark ettim:Java: "Her bir döngü için" Anonim "dizi

String[] arr = {"a","b","c"}; 
for (String crt : arr) { 
    doSomething(); 
} 

yapar iken

for (String crt : {"a","b","c"}) { 
    doSomething(); 
} 

aslında çalışmıyor.

Diziyi String [] 'ye çevirmek bile yardımcı olmaz. İmleci ilk sürüm üzerinde hareket ettirirken, eclipse bana "crt" anlamında "

Type mismatch: cannot convert from String[] to String" u bildirir.

Bu bir hata mı?

+2

"Bu bir hata mıdır?" Ile ilgili olarak: http://www.catb.org/~esr/faqs/smart-questions.html#id382249 –

+2

Aslında ** istemiyorum ** bulunamadı ** bir böcek. Ben sadece ** bir sorun olabilir ** sormak **. Ve bu bölümdeki bir ifadenin işe yaradığı ve başka bir şeyde olmadığı gariptir. Gözlerimde çok tutarlı değil. Kayıt için – Atmocreations

+0

, @JoachimSauer, bir hata bulduğunuzu iddia etmek için acele etmeyin bölümüne atıfta bulunuyordu, güncel URL http://www.catb.org/~esr/faqs/smart -questions.html # idp5122192 –

cevap

60

Bu çalışacaktır: peki ya bu

for (String crt : new String[]{"a","b","c"}) { 
    doSomething(); 
} 
3

Dunno? :) Yazık, kısa bir versiyon yok. Eğer böyle bir şey :)

for (String s : Arrays.asList("a","b","c")) { 
    hmm(s); 
} 
+0

, C# gibi biraz ses çıkarır: P – Atmocreations

2

istiyorsa Sen IntelliJ kullanmak

for (String crt : new String [] {"a","b","c"}) { 
    doSomething(); 
} 

istiyorum Groovy veya Scala kullanabilirsiniz varsayalım ve sağ taraftaki "ifadesi beklenen" mesaj koymak diyor for döngüsü içinde daha doğru görünüyor.

Bu IntelliJ, benim için otomatik olarak "yeni String []" eklemek için teklifler eklemeliyim.

18

Java dili, {"a","b","c"} formunu bir kısayol olarak sağlar, ancak yalnızca ödev sırasında mümkündür. Bu, ayrıştırma sırasında olası belirsizlikleri önlemek için mümkündür, bazı konumlarda {} kod bloğu olarak yorumlanabilir.

Bunu yapmanın doğru yolu, new String[]{"a","b","c"} ile noah'ın nasıl önerdiği olacaktır.

+5

Lütfen tüm ödevlerde kısa biçime izin verilmediğini unutmayın. Sadece başlatmalarda izin verilir. –

+0

@Joachim: ilginç gerçek. Bu hemen hemen sorumu çözüyor, işaret ettiğin için teşekkürler. @ Tom Kalesi: +1 İyi cevap – Atmocreations