Generics হলো জাভাতে একটি শক্তিশালী বৈশিষ্ট্য যা টাইপ নিরাপত্তা (type safety) প্রদান করে এবং ডেটা স্ট্রাকচারের সাথে কাজ করার সময় টাইপের ভুল এড়াতে সহায়তা করে। অ্যাপাচি কমন্স কালেকশনস (Apache Commons Collections) লাইব্রেরি Generics এর সাথে অত্যন্ত ভালোভাবে কাজ করে এবং এটি উন্নত ডেটা স্ট্রাকচার এবং ইউটিলিটি ক্লাস সরবরাহ করে যা টাইপ সেফটি নিশ্চিত করে।
Generics-এর মাধ্যমে আমরা টাইপকে প্যারামিটার হিসেবে ব্যবহার করতে পারি, যা রানটাইমে টাইপ সম্পর্কিত ভুলগুলো কমায়। এতে করে কোড আরো পাঠযোগ্য ও পুনঃব্যবহারযোগ্য হয়।
অ্যাপাচি কমন্স কালেকশনস লাইব্রেরির মধ্যে অনেক ক্লাস রয়েছে যা Generics-এর সাথে ব্যবহৃত হয়, যেমন MultiMap, Bag, ListOrderedMap ইত্যাদি। এগুলো ব্যবহার করলে ডেটা স্ট্রাকচারগুলির টাইপ সুরক্ষা নিশ্চিত করা যায়।
অ্যাপাচি কমন্স কালেকশনস লাইব্রেরির সংস্করণ 4.x এবং তার পরবর্তী সংস্করণে Generics সাপোর্ট করা হয়েছে। এই সংস্করণে বিভিন্ন ক্লাস এবং ইন্টারফেসে টাইপ প্যারামিটার (type parameters) ব্যবহার করা হয়, যার ফলে ডেটা টাইপ নির্ধারণ করা সহজ হয় এবং টাইপ সম্পর্কিত সমস্যাগুলো কমে।
ধরা যাক, আমরা একটি MultiMap ব্যবহার করছি যেখানে একটি কী (key) এর জন্য একাধিক মান (value) থাকবে, এবং আমরা String
টাইপের কী এবং Integer
টাইপের মান সংরক্ষণ করতে চাই।
import org.apache.commons.collections4.MultiMap;
import org.apache.commons.collections4.map.MultiValueMap;
import java.util.Arrays;
public class MultiMapWithGenerics {
public static void main(String[] args) {
// MultiMap তৈরি
MultiMap<String, Integer> multiMap = new MultiValueMap<>();
// ডেটা যোগ করা
multiMap.put("Math", 80);
multiMap.put("Math", 90);
multiMap.put("Science", 85);
multiMap.put("Science", 95);
// ডেটা রিট্রিভ করা
System.out.println("Math Scores: " + multiMap.get("Math"));
System.out.println("Science Scores: " + multiMap.get("Science"));
}
}
Math Scores: [80, 90]
Science Scores: [85, 95]
এখানে, MultiMap<String, Integer>
এর মাধ্যমে আমরা নিশ্চিত করেছি যে, কী হবে String
এবং মান হবে Integer
।
Bag একটি ডেটা স্ট্রাকচার যা ডুপ্লিকেট উপাদানগুলোর উপস্থিতি ট্র্যাক করে এবং প্রতিটি উপাদানের সংখ্যাও সঞ্চয় করে। Bag-এ Generics ব্যবহার করলে আমরা টাইপ সেফটি নিশ্চিত করতে পারি।
import org.apache.commons.collections4.Bag;
import org.apache.commons.collections4.bag.HashBag;
public class BagWithGenerics {
public static void main(String[] args) {
// Bag তৈরি
Bag<String> bag = new HashBag<>();
// উপাদান যোগ করা
bag.add("Apple", 3);
bag.add("Orange", 2);
bag.add("Banana", 1);
// ডেটা রিট্রিভ করা
System.out.println("Bag contents: " + bag);
System.out.println("Count of Apple: " + bag.getCount("Apple"));
}
}
Bag contents: [Apple:3, Orange:2, Banana:1]
Count of Apple: 3
এখানে, Bag<String>
টাইপের মাধ্যমে আমরা নিশ্চিত করেছি যে Bag শুধুমাত্র String
উপাদান সংরক্ষণ করবে।
ListOrderedMap হলো এমন একটি ডেটা স্ট্রাকচার যা Map
এবং List
এর বৈশিষ্ট্যগুলো একত্রে ধারণ করে। এতে কী-ভিত্তিক মানের সাথে সাথে মানগুলোর ইনসার্ট অর্ডারও সংরক্ষিত থাকে।
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.collections4.map.ListOrderedMap;
import java.util.List;
public class ListOrderedMapWithGenerics {
public static void main(String[] args) {
// ListOrderedMap তৈরি
ListOrderedMap<String, String> listOrderedMap = new ListOrderedMap<>();
// ডেটা যোগ করা
listOrderedMap.put("A", "Apple");
listOrderedMap.put("B", "Banana");
listOrderedMap.put("C", "Cherry");
// মান রিট্রিভ করা
List<String> values = listOrderedMap.values();
System.out.println("Values in insertion order: " + values);
}
}
Values in insertion order: [Apple, Banana, Cherry]
এখানে, ListOrderedMap<String, String>
এর মাধ্যমে আমরা নিশ্চিত করেছি যে কী এবং মান উভয়ই String
হবে এবং মানগুলোর ইনসার্ট অর্ডার সংরক্ষণ করা হবে।
অ্যাপাচি কমন্স কালেকশনস লাইব্রেরি Generics-এর সাথে একত্রে কাজ করে ডেটা স্ট্রাকচারের কার্যকারিতা এবং টাইপ সেফটি নিশ্চিত করে। Generics-এর ব্যবহারের মাধ্যমে আমরা MultiMap, Bag, এবং ListOrderedMap ইত্যাদি ডেটা স্ট্রাকচারগুলিতে টাইপ নিরাপত্তা প্রদান করতে পারি, যা কোডের গুণগত মান বৃদ্ধি করে এবং ডেটা ম্যানিপুলেশনকে আরও কার্যকরী করে তোলে।
Java Generics এবং Apache Commons Collections একটি শক্তিশালী কম্বিনেশন, যা Java প্রোগ্রামিং ভাষায় কালেকশন ব্যবস্থাপনা এবং টাইপ সেফটিকে আরও উন্নত এবং সহজ করে তোলে। Generics হল Java এর একটি বৈশিষ্ট্য যা টাইপ সেফটি নিশ্চিত করে এবং কোডের পুনঃব্যবহারযোগ্যতা বাড়ায়। Apache Commons Collections লাইব্রেরি এই বৈশিষ্ট্যটি ব্যবহার করে বিভিন্ন উন্নত ডেটা স্ট্রাকচার এবং ইউটিলিটি ক্লাস সরবরাহ করে, যা Java কালেকশন API এর বাইরের কিছু অতিরিক্ত কার্যক্ষমতা প্রদান করে।
এই টিউটোরিয়ালে, আমরা আলোচনা করব কিভাবে Java Generics এবং Apache Commons Collections একত্রে কাজ করে, এবং কিভাবে আপনি Generics ব্যবহার করে টাইপ সেফ কালেকশন তৈরি করতে পারেন।
Generics হল Java এর একটি বৈশিষ্ট্য যা আপনাকে টাইপ নিরাপত্তা (type safety) বজায় রেখে একে অপরের সাথে সম্পর্কিত ডেটা টাইপের সাধারণ কোড লিখতে সহায়তা করে। এর মাধ্যমে আপনি Collection বা Map এর মতো ডেটা স্ট্রাকচারগুলিতে টাইপ নির্ধারণ করে সেগুলিকে ব্যবহার করতে পারেন। এর ফলে আপনি একই ডেটা স্ট্রাকচারগুলিতে বিভিন্ন ধরনের ডেটা টাইপ ব্যবহারের পরিবর্তে একটি নির্দিষ্ট টাইপের ডেটা সেভ এবং রিট্রিভ করতে পারেন।
import java.util.List;
import java.util.ArrayList;
public class GenericsExample {
public static void main(String[] args) {
// Create a List that holds only Strings
List<String> stringList = new ArrayList<>();
// Add items to the list
stringList.add("apple");
stringList.add("banana");
// Retrieve items from the list
System.out.println(stringList.get(0)); // Output: apple
}
}
এখানে:
List<String>
একটি জেনেরিক কালেকশন যা শুধুমাত্র String
টাইপের উপাদান গ্রহণ করবে। এটি টাইপ সেফটি নিশ্চিত করে এবং কম্পাইল টাইমে ভুল টাইপের উপাদান প্রবেশ করার ক্ষেত্রে এরর দেয়।Apache Commons Collections লাইব্রেরি Generics এর মাধ্যমে আরও শক্তিশালী এবং টাইপ সেফ ডেটা স্ট্রাকচার সরবরাহ করে। আপনি যখন Commons Collections ব্যবহার করবেন, তখন আপনি সহজেই Generics এর সুবিধা নিতে পারেন, যাতে টাইপ সেফ কালেকশন তৈরি এবং পরিচালনা করা সহজ হয়। এটি ডেটা ম্যানিপুলেশন এবং সংগ্রহ করার প্রক্রিয়াকে আরও শক্তিশালী এবং নির্ভরযোগ্য করে তোলে।
Commons Collections লাইব্রেরি Java এর স্ট্যান্ডার্ড Collections Framework এর বাইরের কিছু অতিরিক্ত ডেটা স্ট্রাকচার সরবরাহ করে, যেমন Bag
, MultiMap
, BidiMap
, ইত্যাদি, যা জেনেরিক্সের সাথে ব্যবহৃত হলে আরও কার্যকরী হয়ে ওঠে।
এখানে কিছু উদাহরণ দেওয়া হলো যেখানে Apache Commons Collections এর ডেটা স্ট্রাকচার এবং Java Generics একসাথে ব্যবহৃত হচ্ছে।
Bag
একটি বিশেষ ধরনের Collection যেখানে একটি আইটেম একাধিক বার উপস্থিত থাকতে পারে এবং তার উপস্থিতির সংখ্যা ট্র্যাক করা হয়। আপনি Generics ব্যবহার করে Bag তৈরি করতে পারেন, যা শুধুমাত্র একটি নির্দিষ্ট টাইপের উপাদান ধারণ করবে।
import org.apache.commons.collections4.Bag;
import org.apache.commons.collections4.bag.HashBag;
public class BagExample {
public static void main(String[] args) {
// Create a Bag that holds only Strings
Bag<String> bag = new HashBag<>();
// Add items to the bag
bag.add("apple");
bag.add("banana");
bag.add("apple");
// Print the count of a specific item
System.out.println("Count of apple: " + bag.getCount("apple")); // Output: 2
}
}
এখানে:
Bag<String>
একটি টাইপ সেফ ডেটা স্ট্রাকচার যেখানে শুধুমাত্র String
টাইপের উপাদান ধারণ করা হচ্ছে।bag.getCount("apple")
এর মাধ্যমে apple
আইটেমটির উপস্থিতি গননা করা হয়েছে।MultiMap
হল একটি বিশেষ ধরনের Map যা একটি কী (key) এর সাথে একাধিক মান (value) সংরক্ষণ করতে সক্ষম। আপনি Generics ব্যবহার করে MultiMap তৈরি করতে পারেন, যেখানে একটি কী এর সাথে একাধিক মান সংরক্ষিত থাকে।
import org.apache.commons.collections4.MultiMap;
import org.apache.commons.collections4.map.MultiValueMap;
import org.apache.commons.collections4.map.HashedMap;
public class MultiMapExample {
public static void main(String[] args) {
// Create a MultiMap that holds multiple phone numbers for each person
MultiMap<String, String> phoneBook = new MultiValueMap<>();
// Add phone numbers for John and Jane
phoneBook.put("John", "123-456-7890");
phoneBook.put("John", "987-654-3210");
phoneBook.put("Jane", "555-555-5555");
// Retrieve phone numbers for John
System.out.println("Phone numbers for John: " + phoneBook.get("John"));
// Retrieve phone numbers for Jane
System.out.println("Phone numbers for Jane: " + phoneBook.get("Jane"));
}
}
এখানে:
MultiMap<String, String>
একটি টাইপ সেফ মাল্টি ম্যাপ তৈরি করে যা String
টাইপের কী এবং মান গ্রহণ করে।phoneBook.get("John")
এর মাধ্যমে John এর সকল ফোন নম্বর বের করা হয়েছে।BidiMap
হল একটি দ্বিমুখী ম্যাপ, যেখানে আপনি একটি কী থেকে মান এবং মান থেকে কী উভয় দিক থেকে অ্যাক্সেস করতে পারেন। জেনেরিক্স ব্যবহার করে আপনি BidiMap তৈরী করতে পারেন।
import org.apache.commons.collections4.BidiMap;
import org.apache.commons.collections4.map.HashBidiMap;
public class BidiMapExample {
public static void main(String[] args) {
// Create a BidiMap to store key-value pairs
BidiMap<String, String> bidiMap = new HashBidiMap<>();
// Add key-value pairs
bidiMap.put("one", "1");
bidiMap.put("two", "2");
// Get value by key
System.out.println(bidiMap.get("one")); // Output: 1
// Get key by value
System.out.println(bidiMap.getKey("2")); // Output: two
}
}
এখানে:
BidiMap<String, String>
একটি দ্বিমুখী ম্যাপ তৈরি করে, যা String
টাইপের কী এবং মান ধারণ করে।CollectionUtils ক্লাস অ্যাপাচি কমন্স কালেকশনস লাইব্রেরির একটি গুরুত্বপূর্ণ অংশ, যা বিভিন্ন ইউটিলিটি ফাংশন সরবরাহ করে। Generics এর মাধ্যমে আপনি CollectionUtils ব্যবহার করে বিভিন্ন ধরনের কালেকশন (যেমন List
, Set
, Map
, ইত্যাদি) প্রক্রিয়া করতে পারেন।
import org.apache.commons.collections4.CollectionUtils;
import java.util.List;
import java.util.ArrayList;
public class CollectionUtilsExample {
public static void main(String[] args) {
// Create a list of strings
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
// Check if a certain element exists in the list
boolean containsApple = CollectionUtils.isNotEmpty(list) && CollectionUtils.containsAny(list, "apple");
System.out.println("List contains 'apple': " + containsApple); // Output: true
}
}
এখানে:
CollectionUtils.containsAny(list, "apple")
ব্যবহার করে আমরা যাচাই করেছি যে list
তে "apple" উপাদানটি আছে কি না।Java Generics এবং Apache Commons Collections একসাথে ব্যবহার করে আপনি টাইপ সেফ ডেটা স্ট্রাকচার তৈরি করতে পারেন, যা ডেটা ম্যানিপুলেশনকে আরও শক্তিশালী এবং সহজ করে তোলে। Generics ব্যবহার করে আপনি টাইপ নির্ধারণ করে নিরাপদভাবে ডেটা সংগ্রহ এবং প্রক্রিয়া করতে পারেন, আর Commons Collections লাইব্রেরি বিভিন্ন উন্নত ডেটা স্ট্রাকচার (যেমন Bag
, MultiMap
, BidiMap
) সরবরাহ করে যা ডেটা পরিচালনাকে আরও সহজ এবং কার্যকরী করে তোলে।
Apache Commons Collections লাইব্রেরি Typed Collections সরবরাহ করে যা কোলেকশনগুলিতে টাইপ সেফটি (type safety) নিশ্চিত করে। টাইপ সেফটি নিশ্চিত করার মাধ্যমে আপনি কোলেকশনগুলির উপাদানগুলির টাইপ সম্পর্কে নিশ্চিত হতে পারেন, যা রানটাইমে সম্ভাব্য ClassCastException থেকে রক্ষা করে। Typed Collections কোলেকশনের উপাদানগুলির জন্য একটি নির্দিষ্ট টাইপের অনুমতি দেয় এবং এইভাবে কোলেকশনগুলির উপর নির্ভরযোগ্য কাজ করতে সাহায্য করে।
এটি সাধারণত TypedCollection
ইন্টারফেস এবং TypedList
, TypedSet
ইত্যাদি কোলেকশন ইমপ্লিমেন্টেশন দ্বারা সরবরাহ করা হয়, যেখানে কোলেকশনের উপাদানগুলির টাইপ নির্দিষ্ট করা হয়। এই ফিচারটি কোলেকশন ব্যবহারের সময় টাইপ সংক্রান্ত ভুল থেকে বিরত থাকতে সহায়ক।
Typed Collections এমন কোলেকশন যা কেবল একটি নির্দিষ্ট টাইপের উপাদান ধারণ করে। এই কোলেকশনগুলির সাহায্যে, আপনি generics এর মতো টাইপ চেকিং সুবিধা লাভ করেন এবং এতে টাইপ সম্পর্কিত runtime errors কমে যায়। Apache Commons Collections-এ, টাইপ সেফটি নিশ্চিত করার জন্য TypedCollection
, TypedList
, TypedSet
ইত্যাদি ক্লাস ব্যবহার করা হয়।
টাইপ সেফ কোলেকশন তৈরি করার সময় আপনি কেবল নির্দিষ্ট ধরনের উপাদানকে কোলেকশনে যোগ করতে পারবেন। যদি আপনি একটি ভিন্ন ধরনের উপাদান যুক্ত করার চেষ্টা করেন, তবে এটি কম্পাইল টাইমে একটি এরর সৃষ্টি করবে।
Apache Commons Collections লাইব্রেরিতে TypedCollections এর ব্যবহার বেশ সহজ এবং নির্দিষ্ট টাইপের উপাদানগুলির সাথে কাজ করার জন্য খুবই কার্যকরী।
import org.apache.commons.collections4.ListValuedMap;
import org.apache.commons.collections4.list.TypedList;
import org.apache.commons.collections4.ListValuedMap;
import java.util.ArrayList;
import java.util.List;
public class TypedCollectionsExample {
public static void main(String[] args) {
// Create a TypedList that only accepts Strings
List<String> typedList = new ArrayList<>();
typedList.add("apple");
typedList.add("banana");
// Uncommenting the next line would cause a compile-time error
// typedList.add(42); // Error: Incompatible types
System.out.println("Typed List: " + typedList);
}
}
এখানে:
TypedList
তৈরি করা হয়েছে যা কেবল String টাইপের উপাদানসমূহ গ্রহণ করবে।typedList.add(42)
এই লাইনটি কম্পাইল টাইমে এরর ঘটাবে, কারণ 42 একটি Integer এবং এটি String টাইপের কোলেকশনে যোগ করা সম্ভব নয়।import org.apache.commons.collections4.SetValuedMap;
import org.apache.commons.collections4.set.TypedSet;
import java.util.Set;
import java.util.HashSet;
public class TypedSetExample {
public static void main(String[] args) {
// Create a TypedSet that only accepts Strings
Set<String> typedSet = new HashSet<>();
typedSet.add("apple");
typedSet.add("banana");
// Uncommenting the next line would cause a compile-time error
// typedSet.add(42); // Error: Incompatible types
System.out.println("Typed Set: " + typedSet);
}
}
এখানে:
TypedSet
তৈরি করা হয়েছে যা কেবল String টাইপের উপাদানসমূহ গ্রহণ করবে।typedSet.add(42)
এই লাইনটি কম্পাইল টাইমে এরর ঘটাবে, কারণ 42 একটি Integer এবং এটি String টাইপের কোলেকশনে যোগ করা সম্ভব নয়।টাইপ সেফটি নিশ্চিত করার জন্য, আপনি TypedCollection
, TypedList
, বা TypedSet
ব্যবহার করে কেবল একটি নির্দিষ্ট টাইপের উপাদানগুলিকে অনুমোদন করতে পারেন, যেমন:
import org.apache.commons.collections4.TypedCollection;
import java.util.ArrayList;
public class TypedCollectionExample {
public static void main(String[] args) {
// Create a TypedCollection for Integers
TypedCollection<Integer> typedCollection = new ArrayList<>();
typedCollection.add(10);
typedCollection.add(20);
// Uncommenting the next line would cause a compile-time error
// typedCollection.add("apple"); // Error: Incompatible types
System.out.println("Typed Collection: " + typedCollection);
}
}
এখানে:
TypedCollection
তৈরি করা হয়েছে যা কেবল Integer টাইপের উপাদান গ্রহণ করবে।typedCollection.add("apple")
এই লাইনটি কম্পাইল টাইমে এরর ঘটাবে, কারণ "apple" একটি String এবং এটি Integer টাইপের কোলেকশনে যোগ করা যাবে না।Typed Collections ব্যবহার করার মাধ্যমে আপনি টাইপ সেফ কোলেকশন ম্যানিপুলেশন করতে পারেন। কিছু সাধারণ ব্যবহার:
TypedList
: একাধিক List কোলেকশনে শুধুমাত্র একটি নির্দিষ্ট টাইপের উপাদান যোগ করা।TypedSet
: শুধুমাত্র নির্দিষ্ট টাইপের ইউনিক (unique) উপাদান সংরক্ষণ করতে ব্যবহার করা।TypedMap
: Map কোলেকশনে শুধুমাত্র নির্দিষ্ট টাইপের কী এবং মান সংরক্ষণ করতে ব্যবহার করা।আপনি যদি Typed Collections ব্যবহার করতে চান, তবে আপনাকে Apache Commons Collections লাইব্রেরিটি আপনার প্রোজেক্টে অন্তর্ভুক্ত করতে হবে। যদি আপনি Maven ব্যবহার করেন, তবে আপনার pom.xml ফাইলে নিম্নলিখিত ডিপেনডেন্সি যোগ করতে হবে:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>
এটি Apache Commons Collections লাইব্রেরি আপনার প্রোজেক্টে যোগ করবে, যার মাধ্যমে আপনি Typed Collections এবং অন্যান্য কার্যকারিতা ব্যবহার করতে পারবেন।
Typed Collections হল Apache Commons Collections লাইব্রেরির একটি শক্তিশালী ফিচার যা টাইপ সেফটি নিশ্চিত করে কোলেকশনগুলির উপাদানগুলির জন্য নির্দিষ্ট টাইপ ব্যবহার করতে সহায়তা করে। TypedList, TypedSet, এবং TypedCollection ইত্যাদি কোলেকশনগুলির মাধ্যমে, আপনি কেবল একটি নির্দিষ্ট টাইপের উপাদান কোলেকশনে সংরক্ষণ করতে পারবেন এবং টাইপ সংক্রান্ত ত্রুটির ঝুঁকি কমাতে পারবেন। এটি কোলেকশন ব্যবহারের সময় টাইপ ভুল এবং ClassCastException থেকে সুরক্ষা প্রদান করে।
Typesafe Containers হল এমন ডেটা স্ট্রাকচার যা type-safety নিশ্চিত করে, অর্থাৎ, এতে শুধুমাত্র একটি নির্দিষ্ট ধরনের ডেটা রাখা সম্ভব। এতে generic types ব্যবহৃত হয়, যার মাধ্যমে একটি ডেটা স্ট্রাকচারে শুধুমাত্র একটি নির্দিষ্ট ধরনের অবজেক্ট সংরক্ষিত হয় এবং টাইপ সম্পর্কিত ত্রুটি এড়ানো যায়। Apache Commons Collections লাইব্রেরি Typesafe Containers তৈরি করতে সহায়তা করে।
Typesafe Containers ব্যবহার করার মাধ্যমে আপনি:
Typesafe Containers হল সেই ধরনের কন্টেইনার বা সংগ্রহ (যেমন, List, Set, Map) যা কেবলমাত্র নির্দিষ্ট ধরনের (types) ডেটা ধারণ করতে সক্ষম। এটি type-safe collections তৈরি করতে ব্যবহৃত হয়, যা কেবলমাত্র একটি নির্দিষ্ট type এর অবজেক্ট ধারণ করতে পারে।
এটি Generics এর মাধ্যমে কাজ করে, যেখানে আপনি কন্টেইনারে generic type parameters ব্যবহার করে ডেটার ধরন (type) নির্ধারণ করতে পারেন। এতে আপনি টাইপের ত্রুটিগুলি কমাতে সক্ষম হবেন, যা সাধারণভাবে runtime errors সৃষ্টি করে।
Apache Commons Collections লাইব্রেরি ব্যবহার করে আমরা একটি typesafe container তৈরি করতে পারি, যেখানে একটি নির্দিষ্ট ধরনের ডেটা সংরক্ষিত থাকবে। উদাহরণস্বরূপ, একটি List তৈরি করা যেটিতে শুধুমাত্র String ধরনের ডেটা রাখা যাবে।
import org.apache.commons.collections4.list.TypedList;
import org.apache.commons.collections4.list.TreeList;
import java.util.List;
public class TypesafeContainerExample {
public static void main(String[] args) {
// Creating a typesafe list that can only hold Strings
List<String> typesafeList = new TypedList<>(new TreeList<>());
// Adding elements to the list
typesafeList.add("apple");
typesafeList.add("banana");
typesafeList.add("cherry");
// Trying to add an element of a different type will result in a compile-time error
// typesafeList.add(123); // This line will cause a compile-time error because 123 is not a String
// Print the typesafe list
System.out.println(typesafeList); // Output: [apple, banana, cherry]
}
}
এখানে:
আউটপুট:
[apple, banana, cherry]
এখন ধরা যাক, আপনি একটি Map তৈরি করতে চান, যেখানে কী এবং মান উভয়ই String ধরনের হবে। Typesafe করার জন্য আপনি Map-এ টাইপ নির্দিষ্ট করতে পারেন।
import org.apache.commons.collections4.map.TypedMap;
import org.apache.commons.collections4.map.HashedMap;
import java.util.Map;
public class TypesafeMapExample {
public static void main(String[] args) {
// Creating a typesafe map with String as both key and value types
Map<String, String> typesafeMap = new TypedMap<>(new HashedMap<>());
// Adding key-value pairs to the map
typesafeMap.put("name", "John Doe");
typesafeMap.put("city", "New York");
// Trying to add an element with a different type will result in a compile-time error
// typesafeMap.put(1, "invalid"); // This line will cause a compile-time error because 1 is not a String
// Print the typesafe map
System.out.println(typesafeMap); // Output: {name=John Doe, city=New York}
}
}
এখানে:
আউটপুট:
{name=John Doe, city=New York}
Apache Commons Collections এর মধ্যে TypedMap, TypedList, TypedSet এবং অন্যান্য typesafe containers রয়েছে। এগুলি Java এর generic types এর সাথে মিলে গিয়ে ডেটা নিরাপত্তা নিশ্চিত করতে সাহায্য করে।
Typesafe Containers ব্যবহার করে আপনি নিচের সুবিধাগুলি উপভোগ করতে পারেন:
Apache Commons Collections লাইব্রেরি Typesafe Containers তৈরি করার জন্য শক্তিশালী সরঞ্জাম প্রদান করে, যা type-safety নিশ্চিত করে। আপনি TypedMap, TypedList, TypedSet ইত্যাদি ব্যবহার করে নিশ্চিত করতে পারেন যে কন্টেইনারে শুধুমাত্র একটি নির্দিষ্ট টাইপের ডেটা থাকবে এবং টাইপ সম্পর্কিত ত্রুটি থেকে মুক্ত থাকবেন। Typesafe Containers ব্যবহারে আপনি compile-time type checking এবং runtime safety উপভোগ করতে পারেন, যা কোডের নিরাপত্তা এবং কার্যকারিতা বৃদ্ধি করে।
common.read_more