# लैम्ब्डा व मेथड रेफ़रेंस — एडवांस्ड जावा

Source: https://www.geekswithgeeks.com/hi/advanced-java/adv-lambdas

> Function व Predicate जैसे फ़ंक्शनल इंटरफ़ेस पर लैम्ब्डा से व्यवहार को डेटा की तरह भेजें, मेथड रेफ़रेंस उपयोग करें, और effectively-final कैप्चर का ध्यान रखें।

## फ़ंक्शनल इंटरफ़ेस

लैम्ब्डा एक ही एब्स्ट्रैक्ट मेथड वाले इंटरफ़ेस का इंस्टेंस है। कम्पाइलर पैरामीटर टाइप लक्ष्य से निकालता है।

## सिंटैक्स रूप

मेथड रेफ़रेंस (`String::toUpperCase` आदि) उस लैम्ब्डा का शॉर्टहैंड है जो केवल आर्ग्युमेंट आगे भेजता है।

```java
Comparator<String> byLen = (a, b) -> a.length() - b.length();
Runnable task = () -> System.out.println("run");
Function<String, Integer> len = String::length;
list.sort(Comparator.comparing(String::length));
```

## इफ़ेक्टिवली फ़ाइनल कैप्चर

लैम्ब्डा लोकल वेरिएबल तभी पढ़ सकता है जब वे `final` हों या दोबारा असाइन न हों।
