যেহেতু জাভা 8 সম্প্রতি প্রকাশিত হয়েছে এবং এর ব্র্যান্ডের নতুন ল্যাম্বডা এক্সপ্রেশনগুলি দেখতে দুর্দান্ত লাগছে, তাই আমি ভাবছিলাম যে এটি অনামিকার শ্রেণীর মৃত্যুর অর্থ যা আমরা এতদিন ব্যবহার করতাম।
আমি এ সম্পর্কে কিছুটা গবেষণা করে চলেছি এবং ল্যাম্বদা এক্সপ্রেশনগুলি কীভাবে এই ক্লাসগুলিকে পদ্ধতিগতভাবে প্রতিস্থাপন করবে সে সম্পর্কে কয়েকটি দুর্দান্ত উদাহরণ পেয়েছি, যেমন সংগ্রহের বাছাই পদ্ধতি, যা তুলনা করার জন্য তুলনাকারীর একটি অনামী উদাহরণ পেয়েছিল:
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));
এবং অবাকভাবে সংক্ষিপ্ত দেখাচ্ছে। সুতরাং আমার প্রশ্নটি হচ্ছে, ল্যাম্বডাসের পরিবর্তে জাভা 8-এ এই ক্লাসগুলি ব্যবহার করার কোনও কারণ আছে কি?
সম্পাদনা
একই প্রশ্ন কিন্তু বিপরীত দিকে, বেনাম শ্রেণীর পরিবর্তে লাম্বডাস ব্যবহারের কী কী সুবিধা রয়েছে, যেহেতু লাম্বডাস কেবলমাত্র একক পদ্ধতিতে ইন্টারফেসের সাথে ব্যবহার করা যেতে পারে, এই নতুন বৈশিষ্ট্যটি কেবলমাত্র কয়েকটি ক্ষেত্রে ব্যবহৃত একটি শর্টকাট বা এটি সত্যিই কার্যকর?
Comparator.comparing(Person::getFirstName)
যদি getFirstName()
কোনও পদ্ধতি ফেরত আসে firstName
।