Java 8-এ Lambdas এবং Collections এর ব্যবহার অনেক সহজ এবং কার্যকরী হয়ে গেছে, বিশেষ করে Type Inference এর মাধ্যমে। Type Inference হল সেই প্রক্রিয়া, যার মাধ্যমে কম্পাইলার কোডে প্রদত্ত ধরণের ভিত্তিতে ভেরিয়েবলের টাইপ নির্ধারণ করতে পারে, ফলে কোড আরও পরিষ্কার এবং কম্প্যাক্ট হয়। Java 8-এ Lambdas এবং Collections এর সাথে Type Inference ব্যবহারের ফলে কোড আরও কার্যকরী হয়ে ওঠে, এবং টাইপ উল্লেখ না করেও কম্পাইলার এটি সঠিকভাবে নির্ধারণ করে দেয়।
এখানে আমরা Lambdas, Collections, এবং Type Inference এর মধ্যকার সম্পর্ক এবং ব্যবহার দেখব।
১. Collections এবং Lambdas এর সাথে Type Inference
Java 8-এ Lambda Expressions ব্যবহার করার মাধ্যমে আপনি Collections এর উপাদানগুলোর ওপর কার্যকরভাবে অপারেশন করতে পারেন এবং কম্পাইলার Type Inference ব্যবহার করে কোডকে আরও পরিষ্কার এবং সহজ করে।
Type Inference in Lambda Expressions:
Java 8-এ Lambda Expressions এর মাধ্যমে আপনি কোডকে আরও সংক্ষিপ্ত এবং পরিষ্কারভাবে লিখতে পারেন। Lambda Expressions লিখতে টাইপ ইনফারেন্স ব্যবহার করা হয়, যার মাধ্যমে আপনি Lambda এর প্যারামিটারের টাইপ উল্লেখ না করেও কম্পাইলারের মাধ্যমে সঠিক টাইপ নির্ধারণ করতে পারেন।
উদাহরণ: Type Inference with Lambda Expressions
import java.util.Arrays;
import java.util.List;
public class LambdaTypeInferenceExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");
// Lambda Expression without specifying the type
names.forEach(name -> System.out.println(name)); // No type declaration needed for 'name'
// Type Inference: The compiler infers the type of 'name' as String.
}
}ব্যাখ্যা:
- এখানে,
forEach()মেথডের মধ্যে Lambda Expression ব্যবহৃত হয়েছে। - Type Inference ব্যবহার করা হয়েছে কারণ
nameএর টাইপStringকম্পাইলার দ্বারা স্বয়ংক্রিয়ভাবে নির্ধারণ করা হয়েছে। কোডেStringটাইপটি উল্লেখ করা হয়নি, কিন্তু কম্পাইলার এটি অনুমান করে নিয়েছে।
২. Collections এবং Type Inference
Java 8-এ Collections ব্যবহার করার সময় Type Inference খুবই উপকারী। বিশেষ করে Generics ব্যবহারের ক্ষেত্রে, Type Inference এর মাধ্যমে কম্পাইলার জেনেরিক টাইপের অনুমান করতে পারে, ফলে টাইপের পুনরাবৃত্তি বা অপ্রয়োজনীয় টাইপ উল্লেখের প্রয়োজন হয় না।
উদাহরণ: Type Inference with Collections
import java.util.*;
public class CollectionTypeInferenceExample {
public static void main(String[] args) {
// Type Inference with Collections
List<String> names = new ArrayList<>(); // No need to specify <String> on the right side
names.add("Alice");
names.add("Bob");
names.add("Charlie");
names.forEach(name -> System.out.println(name));
}
}ব্যাখ্যা:
- এখানে,
ArrayListতৈরি করার সময়new ArrayList<>()ব্যবহার করা হয়েছে। Type Inference এর মাধ্যমে কম্পাইলার নির্ধারণ করে নেয় যে এটি একটিArrayList<String>হওয়া উচিত, সুতরাং আপনাকে টাইপStringউল্লেখ করতে হয়নি। - Lambda Expression এর মাধ্যমে
forEach()মেথডের প্রতিটি উপাদান প্রিন্ট করা হয়েছে।
৩. Lambda Expressions with Collections and Type Inference
Java 8-এ Stream API এবং Lambda Expressions একত্রিত হয়ে Collections-এর উপরে শক্তিশালী অপারেশন প্রদান করে। এই সময়েও Type Inference ব্যবহৃত হয়, যাতে কোড কমপ্যাক্ট এবং পরিষ্কার থাকে।
উদাহরণ: Stream API এবং Lambda Expressions with Type Inference
import java.util.*;
import java.util.stream.*;
public class StreamLambdaTypeInferenceExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Eve");
// Filtering and processing a list using Stream and Lambda Expression with Type Inference
List<String> filteredNames = names.stream()
.filter(name -> name.startsWith("A")) // No need to declare type for 'name'
.collect(Collectors.toList());
filteredNames.forEach(name -> System.out.println(name)); // Output: Alice
}
}ব্যাখ্যা:
- এখানে
stream()ব্যবহার করেnamesতালিকার উপাদানগুলোর উপর অপারেশন করা হয়েছে।filter()এবংcollect()মেথডগুলো ফাংশনাল প্রোগ্রামিং ধারণায় কার্যকরী অপারেশন সম্পাদন করেছে। - Lambda Expression এর মধ্যে Type Inference ব্যবহৃত হয়েছে যেখানে
nameএর টাইপ স্বয়ংক্রিয়ভাবে কম্পাইলার নির্ধারণ করে নিয়েছে।
Output:
Alice৪. Type Inference in Generic Methods
Java 8-এ Type Inference generic methods-এও ব্যবহৃত হয়, যেখানে কম্পাইলার স্বয়ংক্রিয়ভাবে টাইপ প্যারামিটার ধারণ করে নেয়। উদাহরণস্বরূপ, আপনি যদি একটি মেথডে generic types ব্যবহার করেন, তবে Type Inference কম্পাইলারকে সেই টাইপকে অনুমান করতে সাহায্য করে।
উদাহরণ: Type Inference with Generic Methods
import java.util.*;
public class GenericMethodTypeInference {
public static void main(String[] args) {
// Generic method with Type Inference
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
// Type Inference in method call
printList(names); // No need to specify the type of List<String>
}
// Generic method with Type Inference
public static <T> void printList(List<T> list) {
list.forEach(item -> System.out.println(item));
}
}ব্যাখ্যা:
- এখানে
printList()মেথডটি generic হয়েছে, যেখানেTটাইপ প্যারামিটারটি ডিফাইন করা হয়েছে। - Type Inference ব্যবহারের মাধ্যমে, যখন আমরা
printList()মেথড কল করেছি, তখন কম্পাইলার স্বয়ংক্রিয়ভাবে নির্ধারণ করেছে যে এটি একটি **List<String>**।
Output:
Alice
Bob
Charlieসারসংক্ষেপ
- Type Inference হল একটি প্রক্রিয়া যা কম্পাইলারকে টাইপ নির্ধারণ করতে সহায়তা করে, যাতে কোড কমপ্লেক্স না হয় এবং টাইপ ঘোষণা করা না লাগে।
- Lambda Expressions-এ Type Inference এর মাধ্যমে আপনি প্যারামিটার টাইপ উল্লেখ না করেও কোড লিখতে পারেন।
- Collections-এর ক্ষেত্রে Type Inference কম্পাইলারকে জেনেরিক টাইপ সহজে অনুমান করতে সাহায্য করে, ফলে কোড আরো পরিষ্কার এবং কমপ্যাক্ট হয়।
- Stream API এবং Lambda Expressions-এর সাহায্যে Type Inference ব্যবহার করে কোড আরো কার্যকরী এবং কমপ্যাক্ট করা যায়।
Java 8-এর Lambda Expressions এবং Type Inference একত্রে ব্যবহার করা হয় যা কোড লেখাকে সহজ, পরিষ্কার এবং দ্রুত করে তোলে।
Read more