चूंकि Java8 हाल ही में जारी किया गया है और इसके बिल्कुल नए लैम्बडा एक्सप्रेशन वास्तव में बहुत अच्छे लग रहे हैं, मैं सोच रहा था कि क्या इसका मतलब यह है कि बेनामी वर्गों का निधन जो हम इतने अभ्यस्त थे।
मैं इस बारे में थोड़ा शोध कर रहा हूं और इस बारे में कुछ अच्छे उदाहरण मिलते हैं कि लैम्बडा के भाव उन कक्षाओं को व्यवस्थित रूप से कैसे बदलेंगे, इस तरह के संग्रह की विधि, जो तुलना करने के लिए तुलनित्र का एक अनाम उदाहरण प्राप्त करते थे:
Collections.sort(personList, new Comparator<Person>(){
public int compare(Person p1, Person p2){
return p1.firstName.compareTo(p2.firstName);
}
});
अब लम्बदा का उपयोग करके किया जा सकता है:
Collections.sort(personList, (Person p1, Person p2) -> p1.firstName.compareTo(p2.firstName));
और आश्चर्यजनक रूप से संक्षिप्त दिखता है। तो मेरा सवाल यह है कि क्या लैम्बडास के बजाय जावा में उन कक्षाओं का उपयोग करने का कोई कारण है?
संपादित करें
एक ही सवाल लेकिन विपरीत दिशा में, अनाम कक्षाओं के बजाय लैम्ब्डा का उपयोग करने के क्या फायदे हैं, क्योंकि लैम्ब्डा का उपयोग केवल एकल विधि इंटरफेस के साथ किया जा सकता है, क्या यह नई सुविधा केवल कुछ मामलों में उपयोग किया जाने वाला शॉर्टकट है या यह वास्तव में उपयोगी है?
Comparator.comparing(Person::getFirstName)
यदि getFirstName()
कोई विधि वापस आ जाएगी firstName
।