我不明白为什么Company
编译。我以为它检查了extends
但不是为了implements
?
public interface Employee
public class HourlyEmployee implements Employee
public class Company<T extends Employee>
Company<HourlyEmployee> company = new Company<>();
The extends
泛型中的关键字与一般关键字的语义略有不同extends
关键词。
使用时extends
例如,在泛型的背景下T extends Something
, 这意味着T
应该是一个类型either实现接口Something
(在以下情况下Something
是接口),or是一个子类Something
(以防万一Something
是一个类)。
造成这种情况的原因可能是,如果implements
泛型中支持关键字,这会使类型参数声明过于冗长。
例如,您将有:
<T extends SomeClass implements Serializable & Observable>
相反,有效的语法是:
<T extends SomeClass & Serializable & Observable>
而且你不需要拥有implements
关键字,实际上。定义类型的边界时T
,你只需要指出哪个types你的类型吗T
派生自,而不关心它们是接口还是类。
类型定义不是类定义。您可以将类型定义视为连接几个数据集,其中结果集就是您的类型T
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)