Ek kapsamının yerel değişkenlerine erişim
Karl Bielefeldt'in kabul ettiği cevap doğru. Bir fark daha ekleyebilirim:
Bir sınıf içinde bir yöntemin içine yerleştirilmiş lambda kodu, bu yöntem ve sınıf içinde bulunan herhangi bir etkin son değişkene erişebilir .
İşlevsel arayüzü uygulayan bir sınıf oluşturmak, çağıran kodun durumuna doğrudan erişiminizi sağlamaz.
Java Eğitimini alıntı yapmak (benimkine vurgu yapmak):
Yerel ve anonim sınıflar gibi, lambda ifadeleri değişkenleri yakalayabilir; Ek kapsamının yerel değişkenlerine aynı erişime sahiptirler . Ancak, yerel ve adsız sınıfların aksine, lambda ifadelerinin herhangi bir gölgeleme sorunu yoktur (daha fazla bilgi için bkz. Gölgeleme). Lambda ifadeleri sözcüksel olarak kapsam dahilindedir. Bu, bir süper tipten hiçbir isim almadıkları ya da yeni bir kapsam belirleme anlamına gelmedikleri anlamına gelir. Bir lambda ifadesindeki bildirimler, tıpkı kapalı ortamda olduğu gibi yorumlanır.
Bu nedenle, uzun kodları çıkarmanın ve adlandırmanın faydaları varken, bunu ekteki yöntem ve sınıfın durumuna doğrudan erişimin basitliğine karşı tartmalısınız.
Görmek: