Avatar ·

هل List<Dog> هي فئة فرعية من List<Animal>؟ لماذا الأدوية الجنيسة في Java ليست متعددة الأشكال؟

مرحبًا أيها الزملاء! أنا مبتدئ في Java وأحاول فهم الأدوية الجنيسة. كتبت كودًا بسيطًا، لكن المترجم يشتكي ولا أفهم السبب. لدي تسلسل هرمي للفئات: Animal هي الفئة الأم، و Dog extends Animal و Cat extends Animal. الآن أريد كتابة دالة تأخذ قائمة من الحيوانات وتطبع أسمائها. من المنطقي أنه إذا مررت قائمة كلاب، يجب أن يعمل كل شيء، لأن Dog هي Animal. لكن المترجم يعطي خطأ! هذا هو الكود: ```java public class GenericsTest { public static void main(String[] args) { List dogs = new ArrayList<>(); dogs.add(new Dog("Rex")); dogs.add(new Dog("Buddy")); printAnimalNames(dogs); // خطأ في الترجمة! } public static void printAnimalNames(List animals) { for (Animal a : animals) { System.out.println(a.getName()); } } } ``` الخطأ: `incompatible types: List cannot be converted to List`.