এই উদাহরণটি বিবেচনা করুন (ওওপি বইতে সাধারণত):
আমার একটি Animal
ক্লাস আছে, যেখানে প্রত্যেকের Animal
অনেক বন্ধু থাকতে পারে।
আর উপশ্রেণী পছন্দ Dog
, Duck
, Mouse
ইত্যাদি যা মতো নির্দিষ্ট আচরণ যোগ bark()
, quack()
ইত্যাদি
এখানে Animal
ক্লাস:
public class Animal {
private Map<String,Animal> friends = new HashMap<>();
public void addFriend(String name, Animal animal){
friends.put(name,animal);
}
public Animal callFriend(String name){
return friends.get(name);
}
}
এবং প্রচুর টাইপকাস্টিং সহ কয়েকটি কোড স্নিপেট এখানে রয়েছে:
Mouse jerry = new Mouse();
jerry.addFriend("spike", new Dog());
jerry.addFriend("quacker", new Duck());
((Dog) jerry.callFriend("spike")).bark();
((Duck) jerry.callFriend("quacker")).quack();
টাইপকাস্টিং থেকে মুক্তি পেতে আমি রিটার্ন টাইপের জন্য জেনেরিকগুলি ব্যবহার করার কোনও উপায় নেই, যাতে আমি বলতে পারি
jerry.callFriend("spike").bark();
jerry.callFriend("quacker").quack();
রিটার্ন টাইপের কিছু প্রাথমিক কোডটি প্যারামিটার হিসাবে পদ্ধতিতে পৌঁছে দেওয়া হয়েছে যা কখনই ব্যবহৃত হয় না।
public<T extends Animal> T callFriend(String name, T unusedTypeObj){
return (T)friends.get(name);
}
অতিরিক্ত প্যারামিটার ব্যবহার না করে রানটাইনে রিটার্নের ধরণটি বের করার কোনও উপায় আছে কি instanceof
? বা কমপক্ষে একটি ডামি উদাহরণের পরিবর্তে ধরণের শ্রেণি পাস করে।
আমি বুঝতে পারি জেনেরিকগুলি টাইপ-টাইপ-টাইপ পরীক্ষা করার জন্য, তবে এটির জন্য কি কোনও কার্যকারিতা রয়েছে?