public class Leaf : IComponent<Leaf>
{
//...
}
这种类型的通用继承机制是否具有任何特定名称?
泛型的这种使用有什么好处?
答案 0 :(得分:4)
据我所知,它没有特定的名称,
正如我所看到的以及所有仿制药一样,真正的好处是类型安全。通过使用通用接口,您可以保证实现的方法是类型安全的(至少在它们的定义中)。
在我看来,如果有可用的通用版本,没有真正的理由使用“普通”接口。
答案 1 :(得分:3)
接口不是继承的,它们是实现的。你所展示的不是继承机制;您正在实现碰巧具有泛型类型参数的接口。
至于好处,我同意AP Erebus;类型安全是主要的好处。
答案 2 :(得分:2)
至少在C ++的上下文中,有一个名字是“curiously recurring template pattern”。
答案 3 :(得分:0)
我已经看到这简称为自引用泛型。我知道这个问题是关于C#的,但我所知道的最好的例子是Java中的Enum类。枚举(例如,exampleEnum
)隐式继承Enum<exampleEnum>
。这允许基类实现需要知道最终封闭泛型类型的类型安全代码。