码迷,mamicode.com
首页 > 其他好文 > 详细

An example problem of Generic types

时间:2015-06-06 16:26:29      阅读:84      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!