interface Foo<T extends Number>{
}
class Bar<T extends Number> implements Foo<T>{
}
为什么必须以这种方式编写类而不是:
class Bar<T extends Number> implements Foo<T extends Number>{
}
当然第二种方式更清楚。
答案 0 :(得分:5)
因为它与T
相同,所以再次说出extends Number
是多余的。
答案 1 :(得分:2)
在第
行class Bar<T extends Number> implements Foo<T> {
T
在第一次出现时定义,在第二次出现时使用。 extends Number
约束T
可以实例化的类型。您只能将这些约束放在T
定义的位置。
它类似于普通的函数参数,只在声明中而不是在使用参数的地方写入类型。