泛型的好处
- 避免了类型强转的麻烦。
- 它提供了编译期的类型安全,确保在泛型类型(通常为泛型集合)上只能使用正确类型的对象,避免了在运行时出现ClassCastException。
泛型的语法
interface 接口名<T>{}
class 类名<T,K>{}
ArrayList<Object> objects = new ArrayList<>();
- 泛型类型只能是引用类型
- 给泛型指定具体类型后,可以传入该类型或者其子类类型
一、自定义泛型
class 类名<T,K>{
成员
}
- 普通成员可以使用泛型(属性,方法)
- 使用泛型的数组不能初始化
- 静态方法不能使用类的泛型
- 泛型的类型,是在创建对象时确定的
- 如果创建对象没有指定泛型,默认为object
二、自定义泛型接口
interface 接口名<T>{}
- 接口中,静态成员也不能使用泛型
- 泛型接口的类型,在实现接口时确定
- 没有指定类型,默认为object
三、自定义泛型方法
修饰符 <T,K> 返回类型 方法名(参数){}
- 泛型方法可以定义在普通类或者泛型类中
- 当泛型类被调用时,类型将被确定
四、泛型的继承和通配符
- 泛型不具有继承性
- <?> 支持任意泛型类型
- <? extends A> 支持A类以及A类的子类,规定了泛型的上限
- <? super A> 支持A类以及A类的子类,规定了泛型的下限
网友评论