Başlık başlık inceleyelim
Switch artık bir değer döndürüp değişkenlere atanabiliyor.
var log = switch (sayi) {
case 1 -> "Bir";
case 2 -> "İki";
default -> "default";
}
};
Artık Python da ya da diğer bazı dillerdeki gibi multiline string (çok satırlı string) tanımlamayı kullanabileceğiz.
String html = """Birinci satır
ikinci satır
üçüncü satır
""";
Instanceof kullanımında eğer şart sağlanıyorsa o tipde değişken tanımlaması geldi. Anlamak için aşağıdaki örneğe bakalım
// Eski hali
if (obj instanceof BenimSınıf) {
BenimSınıf bs = (BenimSınıf) obj;
bs.yapBirseyler();
}
// Yeni hali. İşler biraz daha kolaylaşmış. cast işlemine gerek yok.
if (obj instanceof BenimSınıf bs) {
bs.yapBirseyler();
}
C deki struct benzeri sınıfları yapmak için ya lombok ile @Data sınıf hazırlıyorduk ya da normal değişkenleri tanımlayıp setter/getter kodlarını ekliyorduk. Artık record sınıfları geldi.
public record Uye(
String ad,
String soyad,
int yas
) {}
Bu tarz sınıflar ile sadece veri tutmak istediğimiz zamanlarda kullanarak hafızayı rahatlatabileceğimiz bir yapıya kavuşmuş oluyoruz.
Son özellik ise log işlerini kolaylaştıracak bir yapı. Detaylı hata sebebi veren log kayıtları. Artık nereden hangi işlemden hata aldığımız daha belli.
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "Uye.getYas()" because the return value of "Uye.getYas()" is null at NullPointerExample.main(NullPointerExample.java:5)