检查Java中的子类

检查Java中的子类,java,generics,polymorphism,Java,Generics,Polymorphism,我有以下课程: Class Dog extends Animal Class Cat extends Animal Class Mouse extends Animal 此外,我有一个列表,其中列出了每种动物,无论其子类是什么: List<? extends Animal> list = new ArrayList<? extends Animal>(); 我如何检查列表中的每种动物是狗、猫还是老鼠?如果你想避免多次检查,你可以让狗、猫和老鼠从普通的超类哺乳动物衍生出

我有以下课程:

Class Dog extends Animal
Class Cat extends Animal
Class Mouse extends Animal
此外,我有一个列表,其中列出了每种动物,无论其子类是什么:

List<? extends Animal> list = new ArrayList<? extends Animal>();

我如何检查列表中的每种动物是狗、猫还是老鼠?

如果你想避免多次检查,你可以让狗、猫和老鼠从普通的超类哺乳动物衍生出来,而哺乳动物本身就是动物的一个子类。那么您只需检查:

if (animal instanceof Mammal) { }
通配符,如您应该使用多态性,即重写的方法,以避免必须执行instanceof检查。您想要什么类型的检查?你想要这个课程还是喜欢字符串?我想知道我目前使用的是哪种动物,这样我可以为每种动物运行特定的代码,即狗、猫和老鼠。我想我想知道这个类。你确定它需要特定于一种动物,而不是像奥利·查尔斯沃思建议的那样可以实现吗?就像风格一样,我相信这个语法:List List=new ArrayList;相当于,当然更好。太好了。如果答案可以被标记的话,我会把这个答案标记为代码搜索:哎哟。。。我想现在答案的第二部分是关于老年退休金问题的。很抱歉误解了您的第一次尝试。 if (animal instanceof Mammal) { } abstract class Animal { public abstract void feed (); } class Dog extends Animal { public void feed() { // feed the dog } }