Java泛型 – 为什么“扩展T”允许但不是“实现T”?

问题:

我想知道在Java中是否有一个特殊的原因来使用总是“extends”而不是“implements”来定义类型参数的界限。
例:

public interface C {}
public class A<B implements C>{} 

是禁止但是

public class A<B extends C>{} 

是正确的。这是什么原因?

回答:

通用约束语言之间无论是“实现”还是“扩展”都没有语义上的差异。约束的可能性是“扩展”和“超级” – 也就是说,这个类是可以分配给另一个(扩展)来操作的,或者是这个类可以从那个(超级)分配。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Java generics – why is “extends T” allowed but not “implements T”?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

9 + 1 =