Java:使用getClass获取子类引用

时间:2013-02-25 03:21:15

标签: java

如果我有一个名为Animal的超类,以及名为Cat,Dog,Bird的子类。

如果我读了一个动物数组,想要访问名为meow()的Cat特定方法,我该怎么做?

我知道我可以使用getClass()来查找Animal的子类,但是我如何使用它来创建访问meow的引用()

4 个答案:

答案 0 :(得分:2)

如果您使用的是animal数组,则需要检查您使用的对象是否为Cat类的实例,这可以通过使用{{3}来实现运算符。然后,我们可以使用instanceof运算符将Animal转换为Cat,然后调用meow()方法。

if(animal instanceof Cat){
    (Cat)animal.meow()
}

使用数组

Animal [] animals = [];
foreach(Animal animal: animals){
    //do something

    if(animal instanceof Cat){
        (Cat)animal.meow()
    }
}

答案 1 :(得分:1)

您可以转为Cat

if (animal.getClass().getName().equals('Cat')) {
    ((Cat)animal).meow();
}

或者您可以使用instanceof


这两种解决方案都很丑陋,并且Java不是以这种方式使用的。相反,您应该为可以在内部调用.speak的动物创建Cat.meow方法。

答案 2 :(得分:0)

喜欢这个......

if (animal.getClass().getName().equals('Cat')) {
    ((Cat)animal).meow();
}

if (animal instanceof Cat) {
    ((Cat)animal).meow();
}

答案 3 :(得分:0)

一旦找到了想要使用的子类,就可以进行转换。在你的情况下,它将是

((Cat)animals[index]).meow();