JAVA中基本的泛型语法元素大致有三种:
1限制泛型可用类型、
2使得类型通配符,
3以及泛型的继承。
我们在定义泛型类时,默认的是可以使用任何类型来实例化泛型类中的类型持有者。我们也可以指定某种类型,使得此泛型类只能通过这种类型或其子类,或实现这个接口的类来实例化类型持有者。
我们在定义类型持有者时,使用extends关键字来进行限制,例如我们可以这样定义泛型类:
public class LimitDemo<T extends List>
{
}
这表示类型持有者T所代表的类型必须是一个实现了List接口的类型。
所以我们要这样产生LimitDemo类的实例:
LimitDemo<ArrayList> demo = new LimitDemo<ArrayList>();
因为ArrayList是实现了List接口的类,所以这样写是合法的。如果不是实现List接口的类:
LimitDemo<String> demo = new LimitDemo<String>(); // String没有实现List接口
编译器就会报出 “String类型不在T范围内” 的错误