*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]

