Java 8 öncesi, local , inner veya anonymous bir sınıftan, üst sınıfın değişkenine erişmek için o değişkenin final olarak belirtilmesi gerekir. Aksi takdirde
Cannot refer to a non-final variable XXX inside an inner class defined in a different method
gibi bir hata alınır.
Java 8 ile artık üst değişken final yapılmasına gerek kalmamıştır. Local sınıftan erişilen sınıf otomatik olarak Effectively Final olarak kabul edilir. Eğer üst sınıf, local sınıf içinde değiştirilmeye çalışılırsa aşağıdaki gibi bir hata oluşur :
local variables referenced from an inner class must be final or effectively final