Java’nın 7 versiyonundan önce switch ifadelerinde sadece primitive tipler (char, int, byte, short), bunların wrapper sınıfları (Character, Integer, Byte, Short) ve enumareted tipler (enum) kullanılabiliyordu. Java 7 ile birlikte switch ifadelerinde artık String nesneleri de kullanılabiliyor.
Eski usül bir örnek verecek olursak;
public static final int MONTH_JAN = 1;
public static final int MONTH_FEB = 2;
// ...
public void monthProcess (int month)
{
switch (month) {
case MONTH_JAN:
// ...
break;
case MONTH_FEB:
// ...
break;
// ...
}
}
Şimdi de aynı örneğin Java 7’de String nesneleriyle kullanımına bakalım;
public void monthProcess(String month) {
switch (month) {
case "Jan":
// ...
break;
case "Feb":
// ...
break;
// ...
}
}
Java 7’den önce bu örneği if-else if yapısıyla kullanıyorduk.
public void monthProcessWithIf(String month) {
if (month.equals("Jan")) {
// ...
}
else if (month.equals("Feb")) {
// ...
}
// ...
}
Artık doğrudan switch ifadelerinde kullanabiliyoruz. Ayrıca burada belirtildiğine göre Java derleyicisi switch ifadelerinde String kullanınca if-else if yapısına göre daha efektif byte-code üretiyor.
Son olarak, switch ifadelerinde kullandığımız String ifadeleri büyük küçük harf duyarlı. Gözden kaçmasın.
Ayrıca, Netbeans ve Eclipse (kullanıyorsanız) IDE’lerinin son versiyonlarını yüklemeyi unutmayın. Eski versiyonlar Java 7 desteği vermiyor. Doğrudan java derleyicisi kullananlar için bu açıdan sorun yok.