Java 8 में "::" (डबल कोलन) ऑपरेटर का क्या अर्थ है?
सभी को नमस्ते! मैं Java 8 सीख रहा हूँ और मुझे डबल कोलन "::" के साथ एक अजीब सिंटैक्स मिला। मैंने इसे लैम्ब्डा एक्सप्रेशन के उदाहरणों में देखा, लेकिन मुझे समझ नहीं आ रहा कि यह वास्तव में क्या करता है और इसे कब उपयोग करना चाहिए।
उदाहरण के लिए, मुझे पता है कि स्ट्रिंग्स की लिस्ट को लंबाई के आधार पर फ़िल्टर करने के लिए लैम्ब्डा कैसे लिखना है:
List<String> list = Arrays.asList("a", "bb", "ccc");
list.stream().filter(s -> s.length() > 1).forEach(s -> System.out.println(s));
लेकिन फिर मैंने यह कोड देखा:
list.stream().filter(s -> s.length() > 1).forEach(System.out::println);
यहाँ `s -> System.out.println(s)` के बजाय `System.out::println` लिखा है। यह क्या जादू है? क्या यह समान है? हम सिर्फ लैम्ब्डा का उपयोग क्यों नहीं कर सकते? और यह कैसे समझें कि कब `::` लिख सकते हैं और कब नहीं?