Java-Interviewfragen (Serie) – Funktionale Schnittstelle

Der Teufel steckt immer im Detail! 😈

Knapp

Wenn Sie einem neuen Projekt beitreten, das mindestens Java 1.8 verwendet (wenn nicht, sollten Sie sich nach einem anderen Projekt umsehen), sollten Sie in der Lage sein zu erklären, und was a FunctionalInterface und woraus es besteht.

Implementierung

Lassen Sie uns darauf eingehen! 🚀

EIN FunctionalInterface in Java ist eine Schnittstelle mit nur einer abstrakten Methode.

Das ist es!

@FunctionalInterface
public interface Flyable {
    void fly();
}

Flyable.java

❗️ Denken Sie daran, dass die @FunctionalInterface Anmerkungen sind nicht obligatorisch, aber es empfiehlt sich, sie zu Validierungszwecken hinzuzufügen.

Wenn Sie eine Schnittstelle haben, die mit annotiert ist @FunctionalInterface und Sie versuchen, eine zweite abstrakte Methode hinzuzufügen, erhalten Sie einen netten Kompilierungsfehler, der Ihnen Folgendes mitteilt:

Multiple non-overriding abstract methods found in: YourFunctionalInterface.java.

🤨 Moment mal, der Compiler beschwert sich nicht darüber, dass es mehrere abstrakte Methoden in Ihrer Schnittstelle gibt, aber das sind sie non-overriding.

❓ Hmm, heißt das, dass wir kann haben mehrere abstrakte aber überschreiben Methoden in unserer funktionalen Schnittstelle?

Die Antwort ist ja! ✅

Weitere Beiträge wie diesen finden Sie auf new-spike.net! 🚀

Um es kurz zu machen

Jede Java-Schnittstelle enthält abstrakte Methoden mit derselben Signatur aus der Objektklasse für equals, toString und hashCodeMethoden.

public interface YourInterface {
   String toString(); // this method is already there but you can still explicitly declare it
}

Aus diesem Grund werden sie bei der Validierung von a nicht berücksichtigt FunctionalInterface.

🧩 Wenn dieser Teil etwas verwirrend war, ist es völlig in Ordnung, fassen wir es zusammen:

EIN FunctionalInterface kann enthalten:

🔸 eins abstrakte nicht überschreibende Methode

🔸 eine beliebige Anzahl abstrakter überschreibender Methoden // die von Object

🔸 eine beliebige Anzahl von Standardmethoden

🔸 beliebig viele statische Methoden.

Vollständiges Beispiel

@FunctionalInterface
public interface Flyable {

    void fly();

    String toString(); // overriding method from Object class

    default void defaultMethod() {
        System.out.print("Log from default method!");
    }

    static void staticMethod() {
        System.out.print("Log from static method!");
    }

}

Flyable.java

Bonus

Wenn Sie nicht vertraut sind default und static Methoden in einer Java-Schnittstelle und wofür sie verwendet werden, behalten Sie Ihr E-Mail-Postfach im Auge.

Ich arbeite an einem Java Updates Series wo ich die neuen Funktionen beschreibe, die mit jeder Version von Java beginnend mit 1.8 kommen.

Diese werden im allerersten Beitrag vorhanden sein!

Verpassen Sie keine weiteren Beiträge wie diesen! Abonnieren Sie unseren kostenlosen Newsletter!

Weitere Beiträge wie diesen finden Sie auf new-spike.net! 🚀

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *