JAVA7'de Callback Oluşturma

Java8, lambda fonksiyonlarını destekliyor. Bunun için '->' şeklinde bir operatör tanımlıyor. Bu fonksiyonel programlama için önemli. Ama Java7'de bu desteklenmiyor. Java7'de callback oluşturmak için daha farklı ve dolaylı bir yöntem kullanılıyor.

Açıklama:

Öncelikle sadece bir tane soyut (abstract) fonksiyonuna sahip bir java arayüz (interface) sınıfı tanımlamalıyız.

Aşağıda görülen fonksiyon arayüzde tanımlanan tek soyut fonksiyon (functional interface). Bu fonksiyon, bir olay olduktan sonra olarak çağırılacak (bkz. event listener, callback). Bir fonksiyonun içine parametre olarak verilebilecek (bkz. functional programming).

public interface DurumDegisikligiDinleyici {
 public void degisti();
}

Daha sonra, durumu dinlenen sınıfta, durum değişikliğinin ne zaman gerçekleştiğini gösteren bir fonksiyon tanımlamamız gerekiyor.

class DurumuDinlenen {
 public void durumDinleyici (DurumDegisikligiDinleyici dinleyici) {
 //TODO: durum değişikliği burada yapılır.
 dinleyici.degisti();
 }
}

Son olarak arayüzde imzası verilen fonksiyonu tanımlayacağız. Böylece işlem tamamlanıp durum değiştikten sonra 'degisti()' çağrılmış olacak.

DurumuDinlenen dinlenen = new DurumuDinlenen();
dinlenen.durumDinleyici(new DurumDegisikligiDinleyici() {
 @Override
 public void degisti() {
 //TODO: Değişiklik gerçekleştikten sonra yapılması gerekenler..
  }
 });