首页 > 其他 > 详细

An example problem of Generic types

时间:2015-06-06 16:24:06      阅读:230      评论:0      收藏:0      [点我收藏+]

 

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).

An example problem of Generic types

原文:http://www.cnblogs.com/hephec/p/4556727.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!