是否可以在 Java 中同时指定类型参数的上限和下限约束?
是否可以在 Java 中同时指定类型参数的上限和下限约束?
我在Sun的论坛上找到了一个讨论这个问题的对话(显然是在泛型功能最终确定之前),但没有最终的答案。
总之,是否有有效的语法来执行以下操作?
public class MyClass<T extends Number super Integer>
是否可以在 Java 中同时指定类型参数的上限和下限约束?
我在Sun的论坛上找到了一个讨论这个问题的对话(显然是在泛型功能最终确定之前),但没有最终的答案。
总之,是否有有效的语法来执行以下操作?
public class MyClass<T extends Number super Integer>
我不这么认为 - 据我所知,从语言规范中可以看出,“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
<T extends Number & Comparable> void foo(List<T> list)