Static Method Reference হল Java 8 থেকে নতুন একটি বৈশিষ্ট্য, যা method reference এর একটি বিশেষ রূপ। Method Reference হল একটি শর্টকাট সিঙ্কট্যাক্স যা ল্যাম্বডা এক্সপ্রেশন এর মাধ্যমে ফাংশন বা মেথড কে রেফার করার একটি সরল উপায়। Static method reference ব্যবহার করার মাধ্যমে আপনি কোনো ক্লাসের static method-কে সরাসরি ফাংশনাল ইন্টারফেসের মেথড হিসাবে রেফারেন্স করতে পারেন।
Method Reference কোডকে আরও পরিষ্কার, সংক্ষিপ্ত এবং পাঠযোগ্য করে তোলে। এটি মূলত ল্যাম্বডা এক্সপ্রেশনের একটি উন্নত সংস্করণ যা একে আরও সহজ ও কার্যকরী করে তোলে।
Static Method Reference কী?
Static Method Reference হল একটি প্রক্রিয়া যার মাধ্যমে আপনি একটি স্ট্যাটিক মেথডকে lambda expression এর পরিবর্তে সরাসরি ফাংশনাল ইন্টারফেসের মেথড হিসাবে ব্যবহার করেন। এর মাধ্যমে কোড আরও পরিষ্কার এবং সহজ হয়, কারণ ল্যাম্বডা এক্সপ্রেশন ব্যবহার না করে সরাসরি স্ট্যাটিক মেথড রেফার করা হয়।
Syntax:
ClassName::staticMethodName
এখানে:
- ClassName: সেই ক্লাসের নাম যেখানে স্ট্যাটিক মেথড সংরক্ষিত রয়েছে।
- staticMethodName: স্ট্যাটিক মেথডের নাম যা ফাংশনাল ইন্টারফেসের মেথড হিসেবে রেফার করা হচ্ছে।
Static Method Reference এর উদাহরণ
ধরা যাক, আপনার একটি Calculator ক্লাস আছে যার মধ্যে একটি স্ট্যাটিক মেথড রয়েছে যা দুটি সংখ্যা যোগ করে। সেই মেথডটি ফাংশনাল ইন্টারফেসের মাধ্যমে কিভাবে রেফার করা যায় তা দেখানো হলো।
Step 1: Static Method Definition
public class Calculator {
public static int add(int a, int b) {
return a + b;
}
}
এখানে, add মেথডটি একটি স্ট্যাটিক মেথড, যা দুটি ইনপুট সংখ্যাকে যোগ করে।
Step 2: Static Method Reference ব্যবহার করা
এখন, আমরা add মেথডটিকে Function interface ব্যবহার করে রেফারেন্স করব। এখানে Function ইন্টারফেসের apply() মেথডটি দুটি প্যারামিটার গ্রহণ করে এবং একটি রিটার্ন ভ্যালু প্রদান করে।
import java.util.function.BiFunction;
public class MethodReferenceExample {
public static void main(String[] args) {
// Static Method Reference
BiFunction<Integer, Integer, Integer> adder = Calculator::add;
// Method call using Method Reference
int result = adder.apply(5, 3); // Calls Calculator.add(5, 3)
System.out.println("Sum: " + result); // Output: Sum: 8
}
}
এখানে:
Calculator::addহল static method reference, যা BiFunction ইন্টারফেসের মাধ্যমে add() মেথডকে রেফার করে।apply(5, 3)কলের মাধ্যমে স্ট্যাটিক মেথডটি কল করা হয় এবং যোগফল ৮ রিটার্ন হয়।
Static Method Reference vs Lambda Expression
Lambda expression এবং Static method reference একটি ধরনের একই কাজ করে, কিন্তু স্ট্যাটিক মেথড রেফারেন্স কোডকে আরো সংক্ষিপ্ত এবং পরিষ্কার করে। দেখুন কিভাবে একটি স্ট্যাটিক মেথডকে Lambda expression এবং Method reference এর মাধ্যমে কল করা যায়:
Using Lambda Expression:
BiFunction<Integer, Integer, Integer> adder = (a, b) -> Calculator.add(a, b);
এখানে, (a, b) -> Calculator.add(a, b) একটি ল্যাম্বডা এক্সপ্রেশন, যা ঠিক একই কাজ করে, তবে কোডটি কিছুটা বড়।
Using Static Method Reference:
BiFunction<Integer, Integer, Integer> adder = Calculator::add;
এখানে, Calculator::add স্ট্যাটিক মেথড রেফারেন্স সরাসরি স্ট্যাটিক মেথডটিকে রেফার করে, এবং কোডটি অনেক ছোট এবং পরিষ্কার।
When to Use Static Method References
স্ট্যাটিক মেথড রেফারেন্স ব্যবহার করা উচিত যখন:
- আপনি একটি ফাংশনাল ইন্টারফেসের মাধ্যমে কোনো স্ট্যাটিক মেথড কল করতে চান।
- Lambda expressions ব্যবহার না করে স্ট্যাটিক মেথডটি সরাসরি ব্যবহার করতে চান, যা কোডকে সংক্ষিপ্ত এবং পাঠযোগ্য করবে।
স্ট্যাটিক মেথড রেফারেন্স ব্যবহার করলে আপনার কোডের readability এবং maintainability বাড়বে।
Static Method Reference with Multiple Parameters
স্ট্যাটিক মেথড রেফারেন্স কেবল একটি প্যারামিটার গ্রহণ করা নয়, বরং একাধিক প্যারামিটারও গ্রহণ করতে পারে। ধরুন, একটি স্ট্যাটিক মেথডে দুটি ইনপুট প্যারামিটার প্রয়োজন এবং সেই মেথডে কিছু প্রক্রিয়া করা হচ্ছে।
Example: Static Method with Multiple Parameters
public class Printer {
public static void printMessage(String msg, int times) {
for (int i = 0; i < times; i++) {
System.out.println(msg);
}
}
}
এখানে, printMessage একটি স্ট্যাটিক মেথড যা একটি স্ট্রিং এবং একটি ইনটিজার প্যারামিটার নেয়। এখন, Lambda expression এবং Static Method Reference এর মাধ্যমে মেথড কল করা যায়।
Using Static Method Reference:
import java.util.function.BiConsumer;
public class Main {
public static void main(String[] args) {
// Static Method Reference
BiConsumer<String, Integer> printer = Printer::printMessage;
// Method call using Method Reference
printer.accept("Hello, Java!", 3); // Output: Hello, Java! (3 times)
}
}
এখানে, Printer::printMessage একটি BiConsumer ফাংশনাল ইন্টারফেসের মাধ্যমে মেথডটিকে রেফার করেছে। এটি দুইটি প্যারামিটার গ্রহণ করে, এবং সেই অনুযায়ী accept মেথডে কল করা হচ্ছে।
Static Method Reference হল একটি শক্তিশালী ফিচার যা Java 8-এ আনা হয়েছে এবং Lambda Expressions এর বিকল্প হিসেবে ব্যবহৃত হয়। এটি functional interfaces এর মাধ্যমে কোডের সাইজ কমায় এবং কোড লেখার প্রক্রিয়া আরও সহজ ও পরিষ্কার করে। Method References ব্যবহার করে আপনি Java-তে ফাংশনাল প্রোগ্রামিং এর ধারণা কার্যকরভাবে প্রয়োগ করতে পারেন।
Static Method Reference ব্যবহারের সময় কোডের পড়া এবং রক্ষণাবেক্ষণ সহজ হয়, কারণ এটি ল্যাম্বডা এক্সপ্রেশন এর তুলনায় বেশি পরিষ্কার এবং কমপ্যাক্ট।