zoukankan      html  css  js  c++  java
  • An example problem of Generic types

     

    The following code has a compilation errors. It is confusing because you think somewhere to find the problem.

    import java.util.*;
    abstract class Animal{
        public abstract void checkup();
    }
    class Dog extends Animal{
        public void checkup(){
            System.out.println("Dog checkup");
        }
    }
    class Cat extends Animal{
        public void checkup(){
            System.out.println("Cat checkup");
        }
    }
    class Bird extends Animal{
        public void checkup(){
            System.out.println("Bird checkup");
        }
    }
    public class AnimalDoctorGeneric {
        private void checkAnimals(ArrayList<Animal> animals){
            for(Animal a : animals){
                a.checkup();
            }
        }
        private void addAnimals(List<Animal> animals){
            animals.add(new Dog());
        }
        public static void main(String [] args){
            List<Animal> animals = new ArrayList<Animal>();
            animals.add(new Dog());
            animals.add(new Dog());
            AnimalDoctorGeneric doc = new AnimalDoctorGeneric();
            doc.addAnimals(animals);
            doc.checkAnimals(animals);// error here!!!!
            //doc.checkAnimals((ArrayList<Animal>) animals); this line is the correct code
            //to use checkAnimals method, the argument has to be correct type. 
            //System.out.println(animals.get(1) + " " + animals.get(2));
        }
    }

    To fix the code the easiest way is to cast animals to ArrayList. So to change line 36 to:
    doc.checkAnimals((ArrayList) animals);

    The reason is that ArrayList class implements List interface, they are different, List need to be cast to ArrayList in order to satisfy method checkAnimals(ArrayList animals).

  • 相关阅读:
    第二章——链表
    第一章:基本概念
    第八章
    画图
    关于写代码时的心态问题
    checked用id选择器找不到怎么办
    this指向问题
    es6箭头函数
    微信小程序——获取步数
    小程序——数据缓存
  • 原文地址:https://www.cnblogs.com/hephec/p/4556727.html
Copyright © 2011-2022 走看看