在 Java 中总是使用“ extends
”而不是“ implements
”来定义类型参数的边界是否有特殊原因?
例如:
public interface C {}
public class A<B implements C>{}
被禁止,但是
public class A<B extends C>{}
是正确的。这是什么原因?
原文由 user120623 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 Java 中总是使用“ extends
”而不是“ implements
”来定义类型参数的边界是否有特殊原因?
例如:
public interface C {}
public class A<B implements C>{}
被禁止,但是
public class A<B extends C>{}
是正确的。这是什么原因?
原文由 user120623 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.2k 阅读
8 回答6k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.9k 阅读
1 回答2.2k 阅读✓ 已解决
在类是“实现”还是“扩展”之间,通用约束语言没有语义差异。约束可能性是“扩展”和“超级”——也就是说,这个类是否可以分配给另一个(扩展),或者这个类是否可以从那个(超级)分配。