Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Java

Java 8 - Standaardmethoden

Java 8 introduceert een nieuw concept van implementatie van standaardmethoden in interfaces. Deze mogelijkheid is toegevoegd voor achterwaartse compatibiliteit, zodat oude interfaces kunnen worden gebruikt om de lambda-expressiecapaciteit van Java 8 te benutten.

De interfaces 'List' of 'Collection' hebben bijvoorbeeld geen 'forEach'-methodedeclaratie. Het toevoegen van een dergelijke methode zal dus eenvoudig de implementaties van het verzamelingskader doorbreken. Java 8 introduceert een standaardmethode zodat de Lijst/Verzamelingsinterface een standaardimplementatie van de methode forEach kan hebben, en de klasse die deze interfaces implementeert, hoeft niet dezelfde te implementeren.

Syntaxis

public interface vehicle {

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

Meerdere standaardinstellingen

Met standaardfuncties in interfaces is het mogelijk dat een klasse twee interfaces implementeert met dezelfde standaardmethoden. De volgende code legt uit hoe deze dubbelzinnigheid kan worden opgelost.

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!");
   }
}

De eerste oplossing is om een ​​eigen methode te maken die de standaardimplementatie overschrijft.

public class car implements vehicle, fourWheeler {

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

De tweede oplossing is om de standaardmethode van de opgegeven interface aan te roepen met super.

public class car implements vehicle, fourWheeler {

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

Statische standaardmethoden

Een interface kan vanaf Java 8 ook statische hulpmethoden hebben.

public interface vehicle {

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

Voorbeeld van standaardmethode

Maak het volgende Java-programma met een editor naar keuze, bijvoorbeeld C:\> JAVA.

Java8Tester.java

Live demo
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!");
   }
}

Verifieer het resultaat

Stel de klas samen met javac compiler als volgt -

C:\JAVA>javac Java8Tester.java

Voer nu de Java8Tester als volgt uit -

C:\JAVA>java Java8Tester

Het zou de volgende output moeten produceren -

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

Java

  1. Java-operators
  2. Java-opmerkingen
  3. Java voor elke lus
  4. Java-strings
  5. Java abstracte klasse en abstracte methoden
  6. Java-interface
  7. Java anonieme klasse
  8. Java proberen-met-bronnen
  9. Java-annotaties
  10. Java-beweringen
  11. Java String toLowercase() en toUpperCase() methoden