Dadurch bin ich mit funktionalen Schnittstellen in Java und deren Verwendung mittels Lambda-Ausdrücken vertraut. In einer funktionalen Schnittstelle kann es nur eine abstrakte Methode geben. Da es nur eine abstrakte Methode in der Schnittstelle gibt, versteht der Compiler, dass dies die Methode ist, auf die Sie zugreifen, wenn Sie diese einsame Methode aus einem Lambda-Ausdruck verwenden.
Beispiel:
Obwohl es offensichtlich ist, warum eine funktionale Schnittstelle nur eine abstrakte Methode haben kann, sehe ich nicht ein, warum diese Methode nicht überladen werden kann.
Folgendes wird beispielsweise nicht kompiliert:
Der Compiler behauptet, dass die Ball-Schnittstelle nicht funktionsfähig ist, da sie mehr als eine Methode ähnlich dieser instance enthält, aber ich verstehe nicht, warum dies in diesem Fall ein Problem sein sollte - solange die beiden Methoden unterschiedliche Parameter annehmen, sollte es sein Es ist möglich, anhand der von mir definierten Parameter abzuleiten, auf welche Methode ich mich im Lambda beziehe.
Jede Hilfe wäre sehr willkommen.
Beispiel:
Java:
// Functional Interface:
@FunctionalInterface
public interface Ball
{
void hit();
}
// Lambda to define, then run the hit method:
Ball b = () -> System.out.println("You hit it!");
b.hit();
Obwohl es offensichtlich ist, warum eine funktionale Schnittstelle nur eine abstrakte Methode haben kann, sehe ich nicht ein, warum diese Methode nicht überladen werden kann.
Folgendes wird beispielsweise nicht kompiliert:
Java:
// (NOT) Functional Interface:
@FunctionalInterface
public interface Ball
{
void hit();
void hit(boolean miss);
}
// Lambda to define, then run the hit method:
Ball b = () -> System.out.println("You hit it!");
Ball ba = (boolean miss) -> System.out.println(miss);
b.hit();
ba.hit(false);
Der Compiler behauptet, dass die Ball-Schnittstelle nicht funktionsfähig ist, da sie mehr als eine Methode ähnlich dieser instance enthält, aber ich verstehe nicht, warum dies in diesem Fall ein Problem sein sollte - solange die beiden Methoden unterschiedliche Parameter annehmen, sollte es sein Es ist möglich, anhand der von mir definierten Parameter abzuleiten, auf welche Methode ich mich im Lambda beziehe.
Jede Hilfe wäre sehr willkommen.
Zuletzt bearbeitet von einem Moderator: