Lambda Expressions এবং Method References Java 8-এ ফাংশনাল প্রোগ্রামিংয়ের গুরুত্বপূর্ণ বৈশিষ্ট্য। এই দুটি বৈশিষ্ট্যই ফাংশনাল ইন্টারফেসে অ্যানোনিমাস ফাংশন ব্যবহার করতে সাহায্য করে, তবে তাদের মধ্যে কিছু মূল পার্থক্য রয়েছে। এখানে আমরা Lambda Expressions এবং Method References এর মধ্যে পার্থক্য বিশ্লেষণ করব।
১. Lambda Expressions (ল্যাম্বডা এক্সপ্রেশন)
Lambda Expressions হল একটি সংক্ষিপ্ত এবং অ্যানোনিমাস (নামবিহীন) ফাংশন যা একক ফাংশনাল ইন্টারফেসের জন্য ব্যবহৃত হয়। এটি কোডকে আরো ছোট এবং পরিষ্কার করতে সাহায্য করে।
সিনট্যাক্স:
(parameters) -> expressionএটি একটি ইনপুট প্যারামিটার গ্রহণ করে এবং একটি এক্সপ্রেশন বা স্টেটমেন্ট রিটার্ন করে।
উদাহরণ:
// ল্যাম্বডা এক্সপ্রেশন ব্যবহার করে
List<String> names = Arrays.asList("John", "Jane", "Mike");
names.forEach(name -> System.out.println(name)); // প্রিন্ট করবে সকল নামএখানে, name -> System.out.println(name) একটি ল্যাম্বডা এক্সপ্রেশন যা প্রতিটি উপাদানকে প্রিন্ট করবে।
ব্যবহার:
- ল্যাম্বডা এক্সপ্রেশন একটি অ্যানোনিমাস ফাংশন হিসাবে কাজ করে, এবং এক বা একাধিক ইনপুট প্যারামিটার নিয়ে একটি এক্সপ্রেশন বা স্টেটমেন্ট রিটার্ন করে।
- এটি ফাংশনাল ইন্টারফেসের একমাত্র মেথডের জন্য একটি ইমপ্লিমেন্টেশন সরবরাহ করে।
২. Method References (মেথড রেফারেন্স)
Method References একটি সহজ পদ্ধতি যা ল্যাম্বডা এক্সপ্রেশনকে আরো সংক্ষিপ্ত এবং পরিষ্কার করতে ব্যবহৃত হয়। এটি একটি বিদ্যমান মেথডকে রেফারেন্স করার জন্য ব্যবহৃত হয়, যেখানে ল্যাম্বডা এক্সপ্রেশনের কাজ একইভাবে করা সম্ভব।
সিনট্যাক্স:
ClassName::methodNameএটি বিদ্যমান কোনো মেথডের রেফারেন্স সরাসরি ব্যবহার করে।
উদাহরণ:
// মেথড রেফারেন্স ব্যবহার করে
List<String> names = Arrays.asList("John", "Jane", "Mike");
names.forEach(System.out::println); // প্রিন্ট করবে সকল নামএখানে, System.out::println একটি মেথড রেফারেন্স যা System.out.println() মেথডে রেফারেন্স করছে এবং ল্যাম্বডা এক্সপ্রেশন ব্যবহার না করেই নামগুলো প্রিন্ট করছে।
ব্যবহার:
- Method References ব্যবহার করার মাধ্যমে আপনি একটি বিদ্যমান মেথডের রেফারেন্স সরাসরি ব্যবহার করতে পারেন।
- এটি কোডকে আরো পরিষ্কার এবং সংক্ষিপ্ত করে তোলে, কারণ আপনি নতুন কোনো ফাংশন তৈরি না করে সরাসরি বিদ্যমান মেথড ব্যবহার করেন।
Lambda Expressions এবং Method References এর মধ্যে পার্থক্য:
| বৈশিষ্ট্য | Lambda Expressions | Method References |
|---|---|---|
| সংজ্ঞা | একটি অ্যানোনিমাস ফাংশন যা ইনপুট প্যারামিটার গ্রহণ করে এবং একটি এক্সপ্রেশন বা স্টেটমেন্ট রিটার্ন করে। | বিদ্যমান কোনো মেথডের রেফারেন্স ব্যবহার করে ফাংশনাল ইন্টারফেসের জন্য একটি কার্যকরী প্রোগ্রাম তৈরি করা। |
| সিনট্যাক্স | (parameters) -> expression | ClassName::methodName |
| ব্যবহার | ল্যাম্বডা এক্সপ্রেশন দিয়ে নতুন ফাংশন তৈরি করা হয়। | বিদ্যমান মেথডের রেফারেন্স সরাসরি ব্যবহার করা হয়। |
| পঠনযোগ্যতা | সাধারণত দীর্ঘ হতে পারে এবং কিছুটা জটিল। | সহজ এবং সংক্ষিপ্ত, কোড পড়তে সহজ। |
| ফাংশনাল ইন্টারফেসে | একক ফাংশনাল ইন্টারফেসের মেথডের জন্য কার্যকরী মেথড তৈরি করে। | বিদ্যমান মেথডের রেফারেন্স প্রদান করে। |
| কোডের কার্যকারিতা | কোনো নতুন লজিক যোগ করতে সাহায্য করে। | বিদ্যমান মেথডের পুনরায় ব্যবহার করতে সাহায্য করে। |
উদাহরণ তুলনা:
Lambda Expression:
List<String> names = Arrays.asList("John", "Jane", "Mike");
names.forEach(name -> System.out.println(name)); // ল্যাম্বডা এক্সপ্রেশনMethod Reference:
List<String> names = Arrays.asList("John", "Jane", "Mike");
names.forEach(System.out::println); // মেথড রেফারেন্সএই উদাহরণে, দুটো ক্ষেত্রেই কোডের আউটপুট হবে একরকম, তবে মেথড রেফারেন্স ব্যবহার করলে কোড আরো সংক্ষিপ্ত এবং পরিষ্কার হয়।
সারসংক্ষেপ
- Lambda Expressions একটি অ্যানোনিমাস ফাংশন যা ফাংশনাল ইন্টারফেসের জন্য একটি কার্যকরী মেথড তৈরি করে।
- Method References একটি বিদ্যমান মেথডের রেফারেন্স সরাসরি ব্যবহার করে, কোডের পঠনযোগ্যতা এবং সংক্ষিপ্ততা বৃদ্ধি করে।
যখন কোনো বিদ্যমান মেথড ব্যবহার করা সম্ভব, তখন Method References অধিকাংশ ক্ষেত্রে পছন্দনীয়, কারণ এটি কোডকে আরও পরিষ্কার এবং সংক্ষিপ্ত করে। তবে যখন নতুন লজিক তৈরি করতে হয়, তখন Lambda Expressions ব্যবহার করা হয়।
Read more