Functional Interface
Functional Interface είναι ένα Interface που περιέχει μία μόνο abstract μέθοδο. Μπορεί όμως να περιέχει default και static μεθόδους. Ανφέρεται επίσης ως Single Abstract Method Interfaces (SAM).
Οι functional διεπαφές χρησιμοποιούνται στις εκφράσεις lambda.
Στο παρακάτω παράδειγμα φαίνεται μια functional διεπαφή η οποία υλοποιείται με μια ανώνυμη κλάση όπως κάθε άλλη διεπαφή.
public class Main { public static void main(String[] args) { Shape rec = new Shape() { public void draw() { System.out.println("draw rectangle"); } }; rec.draw(); } } @FunctionalInterface interface Shape { void draw(); }
Εκφράσεις lambda
Οι εκφράσεις lambda είναι συναρτήσεις εκφρασμένες με σύντομη γραφή προκειμένου να έχουμε έναν πιο συμπαγή κώδικα. Χρησιμοποιούνται σε συνδυασμό με τις functional διεπαφές.
Παράδειγμα με εκφράσεις lambda.
public class Main { public static void main(String[] args) { Shape rec = new Shape() { public void draw() { System.out.println("draw rectangle"); } }; rec.draw(); Shape tri = () -> System.out.println("draw triangle"); tri.draw(); } } @FunctionalInterface interface Shape { void draw(); }
Σε μια έκφραση lambda μπορεί να έχουμε παραμέτρους. Επίσης, σε περίπτωση που οι εντολές στο σώμα της μεθόδου είναι πολλές, χρησιμοποιούμε τα άγγιστρα.
Σε μια έκφραση lambda μπορεί να έχουμε return.
Shape ell = (double a, double b) -> { double c = a + b; return(c); } System.out.println(ell.draw(100, 200));