@FunctionalInterface
public interface myFunction<T> {
abstract double apply(T t);
}
Der obige Code ist meine funktionale Schnittstelle.Was macht die Funktionsschnittstelle im Lambda-Ausdruck?
Und der folgende Code ist mein Lambda-Ausdruck. Was macht die funktionale Schnittstelle in meinem Lambda-Ausdruck, da es nur ein einfaches "Double" gibt? Wenn es keine funktionale Schnittstelle gibt, wie wird es dann aussehen?
import java.util.HashSet;
public class TestFindArea {
public static double findArea(myFunction<Double> f,double a,double b){
return (f.apply(a)+f.apply(b))*(b-a)/2;
}
public static void main(String[] args) {
System.out.println(findArea((x) -> x+2 , 4, 8));
Fragen Sie, was die '@ FunctionalInterface' Annotation ist? Oder fragen Sie nach Ihrem Code? Ich kann nicht verstehen, was du verlangst. Beachten Sie auch die Java-Namenskonventionen. Klassen und Schnittstellen haben einen Großbuchstaben. –
Ich verstehe nicht, warum es in der funktionalen Programmierung eine funktionale Schnittstelle geben muss und was die Schnittstelle macht –
In der funktionalen Programmierung muss es keine funktionalen Schnittstellen geben. Das Grundprinzip besteht darin, Funktionen an andere Funktionen zu übergeben. Aber Java ist eine OO-Sprache und hat keine direkte Unterstützung für Funktionen. Es hat jedoch Unterstützung für Schnittstellen. Daher entschieden sich die Java-Entwickler dafür, eine Schnittstelle mit einer einzigen Methode zur Darstellung eines Funktionstyps zu verwenden. Und Lambda-Ausdrücke sind Instanzen dieser funktionalen Schnittstellen. Andere funktionale Sprachen wie JavaScript oder Kotlin benötigen solche Schnittstellen nicht. Sie können nur Funktionen der obersten Ebene definieren und diese direkt übergeben. Ist es das, was du fragst? –