Sobes.tech
Middle

Τι είναι οι εκφράσεις lambda στη Java και ποιες δυνατότητες παρέχουν;

sobes.tech AI

Απάντηση από AI

Η έκφραση lambda στη Java είναι μια ανώνυμη λειτουργία που δεν ανήκει σε καμία κλάση και μπορεί να μεταβιβαστεί ως αντικείμενο.

Σύνταξη: (παραμέτρους) -> { σώμα }

Δυνατότητες:

  1. Λειτουργική διεπαφή: Η έκφραση lambda μπορεί να ανατεθεί σε μια μεταβλητή τύπου λειτουργικής διεπαφής (διεπαφή με μία μόνο αφηρημένη μέθοδο).
    // Λειτουργική διεπαφή  
    @FunctionalInterface  
    interface MyInterface {  
        void myMethod();  
    }  
    
    // Χρήση της έκφρασης lambda  
    MyInterface lambda = () -> System.out.println("Γειά από το lambda!");  
    lambda.myMethod();  
    
  2. Απλοποίηση κώδικα: Αντικαθιστούν τις ανώνυμες εσωτερικές κλάσεις για την υλοποίηση λειτουργικών διεπαφών.
    // Πριν από Java 8 (ανώνυμη κλάση)  
    Thread thread1 = new Thread(new Runnable() {  
        @Override  
        public void run() {  
            System.out.println("Παλιός τρόπος");  
        }  
    });  
    
    // Από Java 8 και μετά (lambda)  
    Thread thread2 = new Thread(() -> System.out.println("Τρόπος lambda"));  
    
  3. Χρήση στο Stream API: Ενσωματώνονται με το Stream API για εκτέλεση λειτουργιών σε συλλογές.
    List<String> names = Arrays.asList("Alice", "Bob", "Charlie");  
    names.stream()  
         .filter(name -> name.startsWith("A")) // Έκφραση lambda  
         .forEach(System.out::println);        // Αναφορά μεθόδου (έκφραση lambda)  
    
  4. Αναβολή εκτέλεσης: Ο κώδικας μέσα στην έκφραση lambda εκτελείται μόνο όταν καλείται η λειτουργική μέθοδος.
  5. Περιοχή ορατότητας μεταβλητών: Οι εκφράσεις lambda μπορούν να καταγράφουν μεταβλητές από το εξωτερικό περιβάλλον (οι τοπικές μεταβλητές πρέπει να είναι τελικές ή αποτελεσματικά τελικές).
Πλεονέκτημα Περιγραφή
Συντομία κώδικα Μειώνει την "πολυλογοσύνη" σε σύγκριση με τις ανώνυμες κλάσεις.
Βελτιωμένη αναγνωσιμότητα Ο κώδικας γίνεται πιο συνοπτικός και κατανοητός.
Παράλληλη επεξεργασία Υποστηρίζεται από το Stream API για παράλληλες λειτουργίες.