আফাইক, আমার ক্লাস extends
প্যারেন্ট ক্লাস এবং implements
ইন্টারফেস। তবে আমি এমন একটি পরিস্থিতি ছড়িয়েছি, যেখানে আমি ব্যবহার করতে পারি না implements SomeInterface
। এটি জেনেরিক প্রকারের ঘোষণা। উদাহরণ স্বরূপ:
public interface CallsForGrow {...}
public class GrowingArrayList <T implements CallsForGrow> // BAD, won't work!
extends ArrayList<T>
এখানে implements
সিনথেটিকভাবে ব্যবহার নিষিদ্ধ। আমি প্রথমে ভেবেছিলাম, <> ভিতরে ইন্টারফেস ব্যবহার করা মোটেও নিষিদ্ধ, তবে না। এটা সম্ভব, আমি কেবল extends
পরিবর্তে ব্যবহার করতে হবে implements
। ফলস্বরূপ, আমি একটি ইন্টারফেস "প্রসারিত" করছি। এটি অন্য একটি উদাহরণ কাজ করে:
public interface CallsForGrow {...}
public class GrowingArrayList <T extends CallsForGrow> // this works!
extends ArrayList<T>
আমার কাছে এটিকে সিন্ট্যাক্টিকাল অসঙ্গতি বলে মনে হচ্ছে। তবে আমি জাভা 6 এর কিছু জরিমানা বুঝতে পারি না? আমার অন্যান্য ইন্টারফেসগুলি বাড়ানো উচিত এমন অন্য কোনও জায়গা আছে? ইন্টারফেসের, যেটি আমি প্রসারিত করতে চাইছি, এর কিছু বিশেষ বৈশিষ্ট্য থাকা উচিত?