在 Java 中,您可以执行以下操作:
public interface IEngine{}
public interface ICoolEngine extends IEngine{}
public interface Car
{
IEngine getEngine();
}
public interface ICoolCar extends ICar
{
@Override
ICoolEngine getEngine();
}
虽然这很好地解决了我一直在努力解决的问题,但“感觉”有些地方不对。
我是不是犯了一些令人讨厌的设计失礼?
最佳答案
不,你做对了。协变返回只是指定该类及其下面的类必须返回父类返回的原始通用类参数的特定子类。这也意味着你的子类仍然与要求它返回引擎的原始接口(interface)兼容,但如果你知道它是一个 ICoolCar,它有一个 ICoolEngine - 因为更具体的接口(interface)知道更具体的功能。这适用于接口(interface)和类 - 这是正确的、适当的并且对引导很有用。
关于java - 覆盖扩展接口(interface)中的返回类型 - 坏主意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/864557/