Mit dem Release von Java 8 stehen uns Java Entwicklern wieder eine Fülle neuer Möglichkeiten ins Haus. Unter anderem wurden die Mittel, die uns bei der Nutzung eines Interface gegeben sind, erweitert.
Statische Methoden in Interfaces
In Interfaces können nun statische Methoden definiert werden. Zu sehen im JDK selbst z.B. im Comperator Interface, dass u.a. um Funktionen für besondere Reihenfolgen erweitert wurde.
Damit ist es möglich für ein Interface Foo eine Util Klasse Foos, welche unter anderen im JDK bei java.util.Collection und deren Subinterfaces üblich sind, zu vereinfachen bzw. ganz aufzulösen. Die Funktionalität kann nun einfach im Interface selbst umgesetzt werden. Perfekte Kandidaten sind dabei Methoden von z.B. Arrays
Siehe auch: http://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html#static
Default Methoden in Interfaces
Zusätzlich können Interfaces in Java 8 um Default Methoden erweitert werden. Man erschafft damit Methoden die sich die Klassen, welche das Interface beerben in voller Funktionalität aneigenen. Dies birgt den Vorteil der Single-Inheritance in Java entgegenwirken zu können. Zusätzlich kann man damit neue Funktionalität zu Intefaces hinzufügen, ohne die Binärkompatiblität mit älterem Code zu brechen.
public interface Human { void eat(); int count(String… obj); default void breathe() { // ... } }
Jegliches weitere Interface, welches das Interfaces Human erweitert, kann nun auf 3 Arten mit der default Methode umgehen:
- Sie unbeachtet lassen, dabei erbt sie die Funktionalität der default Methode.
- Sie erneut deklarieren, so dass sie, wie die ansonsten üblichen Methoden in Interfaces abstrakt ist, und somit implementiert werden muss.
- Sie überschreiben mittels neuer default Methode.
Siehe auch: http://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html
Eine ausführlichere Zusammenfassung rund um das Thema Interface findet sich unter http://java-latte.blogspot.co.at/2014/01/everything-about-interface-in-java.html
Schreibe einen Kommentar