是否可以在Java中指定类型参数的上限和下限约束?
是否可以在Java中指定类型参数的上限和下限约束?
我在Sun的论坛中发现了一个对话,其中讨论了这个问题(显然是在仿制药function最终确定之前),但没有最终答案。
总之,是否有一个有效的语法来执行此操作:
public class MyClass
?
我不相信 – 据我所知,从语言规范来看,“super”仅对通配符类型有效。 通配符的语法也表明你也只能有一个通配符绑定 – 所以你不能使用这样的东西:
// Invalid void foo(List extends Foo super Bar> list)
即使这两个都没问题:
// Valid void foo(List extends Foo> list) // Valid void foo(List super Bar> list)
如注释中所述,可能有多个上限 – 但仅适用于类型参数和强制转换表达式。 例如:
// Valid void foo(List list)
来自Oracle的教程 :
注意:您可以指定通配符的上限,也可以指定下限,但不能同时指定两者 。