
❀泛型可以使我们在编译时而不是在运行时检测出错误
通配泛型
T为泛型类型
- 第一种形式(?):非受限通配
- 第二种形式(? extends T):受限通配
- 第三种形式(? super T):下限通配

消除泛型和对泛型的限制
- 限制1:不能使用new E()
不能使用泛型类型参数创建实例
- 限制2:不能使用new E[ ]
不能使用泛型类型参数创建数组 但可用下面方式规避这个限制
E[ ] elements = (E[ ])new Object[capacity];

- 限制3:在静态上下文中不允许类的参数时泛型类型
- 限制4:异常类不能时泛型的