*FIGURE 1. The structure of an enhancement for statement
Sağ tərəf (collection) massiv tipində və ya java.lang.Iterable
interface`indən implements olunmuş classlar (xüsusilə Java Collections) olmalıdır. Sol tərəf (instance) isə sağ tərəfdəki collection`un tipində olan dəyişən. Məsələn;
collection ⇒ String [] arr, ArrayList<Integer> list;
instance ⇒ String s, Integer i.
for
dövründən fərqli olaraq forEach dövründə instance dəyişəni dövrdən əvvəl təyin etmək olmur, ancaq içəridə elan olunmalıdır.
final String[] names = new String[3]; names[0] = "Murad"; names[1] = "İlkin"; names[2] = "Elmar"; for(String name: names){ System.out.print(name + ", "); // Murad, İlkin, Elmar, } String name2; for (name2 : names) { // does not compile, identifier expected System.out.println(name2); } names = new String[5]; // does not compile, because of final
for & forEach qarşılaşdırması:
String[] names = {"Ceyhun", "Elnur", "Hasil", "Adil"}; List<Integer> values = (List<Integer>) Arrays.asList(new Integer[]{6, 5, 4}); for (String name : names) { System.out.print(name + ", "); } for (int i = 0; i < names.length; i++) { String name = names[i]; System.out.print(name + ", "); } for (int value : values) { System.out.print(value + " "); } for (java.util.Iterator<Integer> i = values.iterator(); i.hasNext(); ) { int value = i.next(); System.out.print(value + " "); }
java.util.Iterator
class`ı istifadə edildikdə updateStatement bölməsinə ehtiyac yoxdu.
Digər nümunələr:
Integer[] i = new Integer[3]; for (int i: i) { // does not compile, eyni dəyişən adına görə System.out.println(i); } for (int a: i) { // does compile, but throw NullPointerException System.out.println(a); } for (Integer a: i) { // does compile and output: null null null System.out.print(a + " "); }
forEach massiv və ya Collection tipində dəyərlər (başqa sözlə java.lang.Iterable
interfeysini implements etmiş obyektlər) qəbul edir. Map
`ı forEach dövründə birbaşa istifadə etmək mümkün deyil, çünki Map
Iterable
interfeysinin varisi deyil. Amma Map`ın keySet()
və ya values()
metodlarından istifadə etməklə onu forEach dövründə işlətmək olar, çünki bu metodlar geriyə Collection
qaytarır.
Modifier`lərdən ancaq final
açar sözü forEach dövründə istifadə edilə bilər.
String[] banks = {"CBAR", "IBAR", "Unibank"}; for(final String s: banks){}
[topics lang=az]