在Java中,泛型中的extends和super是用于限定泛型类型参数的关键字。
- extends: 用于声明一个类型参数上界,限定传入的类型必须是该类型或其子类。如`class Box<T extends Number>`表示T类型必须是Number及其子类。
- super: 用于声明一个类型参数下界,限制传入的类型必须是该类型或其父类。如`List<? super Integer>`表示List的元素类型必须是Integer及其父类。
简单来说,extends用于限定范围,使得当前类或方法只能接受某个特定的类型及其子类型作为参数;而super则可以让类或方法接受更广泛的类型范围作为参数。
需要注意的是:
- 在泛型类中,类型参数不能同时使用extends和super限定;
- 在泛型方法中,类型参数可以使用extends或super限定,但不能两者都用。