假设我有以下界面:

interface Mammal {
    void marry(Mammal m);
    Mammal giveBirthTo();
}

但是,这并不能完全说明我想要什么。

显然,人不能嫁给狗,也不能生猫。那么,如何将这些信息嵌入到接口(interface)中,以便在实现输入类型和输出类型时可以自动对其进行更改?

最佳答案

您可以使用泛型并更改您的设计。

符合以下条件的东西:

interface Marriable<T extends Mammal> {
    void marry(T sweetHalf);
    T giveBirthTo();
}

... Mammal是您的顶级接口(interface)或抽象类,而HumanDogUnicorn等则对其进行扩展/实现。

08-04 14:43