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 Default Methods: Interfaces verbeteren & backward compatibility

Java 8 introduceert het concept van default-methode-implementatie in interfaces. Deze mogelijkheid is toegevoegd voor backward compatibility, zodat oude interfaces de lambda-expressie-mogelijkheden van Java 8 kunnen benutten.

Bijvoorbeeld, de List- of Collection-interfaces hebben geen forEach-methode-declaratie. Het toevoegen van zo'n methode zou de collection framework-implementaties breken. Java 8 introduceert default-methodes zodat List/Collection een standaardimplementatie van forEach kan hebben, en implementerende klassen hoeven deze niet te implementeren.

Syntaxis

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

Meerdere Defaults

Met default-functies in interfaces kan een klasse twee interfaces implementeren met dezelfde default-methode. De volgende code toont hoe deze ambiguïteit opgelost kan worden.

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

Oplossing 1: Maak een eigen methode die de default-implementatie overschrijft.

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

Oplossing 2: Roep de default-methode van de gespecificeerde interface aan via super.

public class car implements vehicle, fourWheeler {
    public void print() { vehicle.super.print(); }
}

Statische Default-methodes

Een interface kan vanaf Java 8 ook statische hulpmethodes hebben.

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

Default-methode Voorbeeld

Maak het volgende programma in C:\JAVA:

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

Resultaat verifiëren

Compileer met javac:

C:\JAVA> javac Java8Tester.java

Voer uit:

C:\JAVA> java Java8Tester

Uitvoer:

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

Java

  1. Java-operators beheersen: typen, syntax en praktische voorbeelden
  2. Java-commentaar: typen, gebruik en best practices
  3. Java Enhanced For-lus beheersen: syntax, voorbeelden en best practices
  4. Java Strings beheersen: aanmaken, methodes en best practices
  5. Java abstracte klassen en methoden: een uitgebreide gids
  6. Java interfaces meesteren: concepten, implementatie en best practices
  7. Java anonieme inner classes meesteren: definitie, syntax en praktische voorbeelden
  8. Java Try-with-resources meesteren: automatische resource management uitgelegd
  9. Java Annotaties uitgelegd: typen, plaatsing en praktische voorbeelden
  10. Java Assertions: een praktische gids voor bugdetectie en codebetrouwbaarheid
  11. Java String toLowerCase() & toUpperCase(): Tekstcase Converteren met Locale Awareness