Java 8 - Varsayılan Yöntemler

Java 8, arayüzlerde yeni bir varsayılan yöntem uygulaması kavramı sunar. Bu yetenek, geriye dönük uyumluluk için eklenmiştir, böylece eski arayüzler Java 8'in lambda ifade özelliğinden yararlanmak için kullanılabilir.

Örneğin, 'List' veya 'Collection' arabirimlerinde 'forEach' yöntem bildirimi yoktur. Bu nedenle, böyle bir yöntemin eklenmesi, koleksiyon çerçevesi uygulamalarını basitçe bozacaktır. Java 8, List / Collection arabiriminin varsayılan bir forEach yöntemi uygulamasına sahip olabilmesi için varsayılan yöntemi sunar ve bu arabirimleri uygulayan sınıfın aynı yöntemi uygulaması gerekmez.

Sözdizimi

public interface vehicle {

   default void print() {
      System.out.println("I am a vehicle!");
   }
}

Birden Çok Varsayılan

Arabirimlerdeki varsayılan işlevlerle, bir sınıfın aynı varsayılan yöntemlerle iki arabirim uygulaması olasılığı vardır. Aşağıdaki kod, bu belirsizliğin nasıl çözülebileceğini açıklamaktadır.

public interface vehicle {

   default void print() {
      System.out.println("I am a vehicle!");
   }
}

public interface fourWheeler {

   default void print() {
      System.out.println("I am a four wheeler!");
   }
}

İlk çözüm, varsayılan uygulamayı geçersiz kılan kendi yöntemini oluşturmaktır.

public class car implements vehicle, fourWheeler {

   public void print() {
      System.out.println("I am a four wheeler car vehicle!");
   }
}

İkinci çözüm, belirtilen arayüzün varsayılan yöntemini süper kullanarak çağırmaktır.

public class car implements vehicle, fourWheeler {

   public void print() {
      vehicle.super.print();
   }
}

Statik Varsayılan Yöntemler

Bir arabirim ayrıca Java 8'den itibaren statik yardımcı yöntemlere sahip olabilir.

public interface vehicle {

   default void print() {
      System.out.println("I am a vehicle!");
   }
	
   static void blowHorn() {
      System.out.println("Blowing horn!!!");
   }
}

Varsayılan Yöntem Örneği

C: \> JAVA'da seçtiğiniz herhangi bir düzenleyiciyi kullanarak aşağıdaki Java programını oluşturun.

Java8Tester.java

public class Java8Tester {

   public static void main(String args[]) {
      Vehicle vehicle = new Car();
      vehicle.print();
   }
}

interface Vehicle {

   default void print() {
      System.out.println("I am a vehicle!");
   }
	
   static void blowHorn() {
      System.out.println("Blowing horn!!!");
   }
}

interface FourWheeler {

   default void print() {
      System.out.println("I am a four wheeler!");
   }
}

class Car implements Vehicle, FourWheeler {

   public void print() {
      Vehicle.super.print();
      FourWheeler.super.print();
      Vehicle.blowHorn();
      System.out.println("I am a car!");
   }
}

Sonucu Doğrulayın

Kullanarak sınıfı derleyin javac aşağıdaki gibi derleyici -

C:\JAVA>javac Java8Tester.java

Şimdi Java8Tester'i aşağıdaki gibi çalıştırın -

C:\JAVA>java Java8Tester

Aşağıdaki çıktıyı üretmelidir -

I am a vehicle!
I am a four wheeler!
Blowing horn!!!
I am a car!