如何在没有强制转换的情况下从父类的方法返回子类的'this'?

时间:2015-11-04 14:37:05

标签: java inheritance

我有一个抽象类Animal

public abstract class Animal {
    public Animal eat() {
        return this;
    }
}

我有一个Cat类扩展Animal

public class Cat extends Animal {
    public Cat run() {
        return this;
    }
    public Cat sleep() {
        return this;
    }
}

有了这个,我希望能够做到这一点:

Cat cat = new Cat();
cat.run()
    .eat()
    .sleep();

但遗憾的是我不能,因为eat()方法会返回Animal的实例,并且sleep()类中没有Animal方法。

一个丑陋的解决方案可能是将Animal方法返回的eat()实例转换为Cat类型,如下所示:

Cat cat = new Cat();
((Cat) cat.run()
    .eat())
    .sleep();

但我不想这样做,因为在我的实际案例中,我正在链接许多方法。

问题:有没有办法强制父类的方法返回子实例?

0 个答案:

没有答案