为什么实现通用接口反直觉?

时间:2010-10-15 22:06:16

标签: java generics interface

interface Foo<T extends Number>{
}

class Bar<T extends Number> implements Foo<T>{

}

为什么必须以这种方式编写类而不是:

class Bar<T extends Number> implements Foo<T extends Number>{
}

当然第二种方式更清楚。

2 个答案:

答案 0 :(得分:5)

因为它与T相同,所以再次说出extends Number是多余的。

答案 1 :(得分:2)

在第

class Bar<T extends Number> implements Foo<T> {

T在第一次出现时定义,在第二次出现时使用。 extends Number约束T可以实例化的类型。您只能将这些约束放在T定义的位置。

它类似于普通的函数参数,只在声明中而不是在使用参数的地方写入类型。