速记-泛型擦除
泛型擦除是 Java 泛型中一种类型擦除机制,它是指在编译期间对泛型类型信息进行擦除,将泛型类型信息转换成普通的类型,从而避免了 Java 泛型运行时的性能消耗和类型转换的问题。具体而言,泛型擦除会将泛型类型参数在编译时替换成 Object 类型,并在需要类型转换的地方插入强制类型转换。
例如,对于一个泛型类 List<T>,在编译时泛型类型参数 T 会被擦除,因此 List<T> 会被转换成 List<Object> 类型,并在需要类型转换的地方插入强制类型转换。
泛型擦除的优点是可以使泛型代码与非泛型代码相互操作,同时还可以减少内存使用和提高性能。但它也有一些缺点,比如在运行时无法获得泛型类型信息,这可能会导致一些运行时异常。另外,泛型擦除也会限制一些使用泛型的高级特性,如泛型数组和通配符类型等。
ava 泛型可以有以下几种参数:
类型参数(Type Parameters):它用来指定泛型类型的占位符,可以是任意标识符,通常用大写字母来表示。例如,List<T> 中的 T 就是一个类型参数。
通配符类型参数(Wildcard Type Parameters):它使用 ? 来表示一种不确定的类型参数,可以用来限制方法参数的类型范围。例如,List<? extends Number> 中的 ? extends Number 就是一个通配符类型参数,表示 List 中的元素必须是 Number 类型或其子类型。
有界类型参数(Bounded Type Parameters):它可以限制泛型类型的取值范围,可以指定上界或下界。例如,<T extends Number> 中的 extends Number 就是一个有界类型参数,表示 T 必须是 Number 类型或其子类型。
泛型数组参数(Generic Array Parameters):它用来指定泛型数组的类型,可以使用类型参数或通配符类型参数。例如,T[] 或 ?[] 都是泛型数组参数。
以上是 Java 泛型中常用的几种参数类型,开发者可以根据自己的需要来选择合适的参数类型来定义泛型类型或方法。
例如,对于一个泛型类 List<T>,在编译时泛型类型参数 T 会被擦除,因此 List<T> 会被转换成 List<Object> 类型,并在需要类型转换的地方插入强制类型转换。
泛型擦除的优点是可以使泛型代码与非泛型代码相互操作,同时还可以减少内存使用和提高性能。但它也有一些缺点,比如在运行时无法获得泛型类型信息,这可能会导致一些运行时异常。另外,泛型擦除也会限制一些使用泛型的高级特性,如泛型数组和通配符类型等。
ava 泛型可以有以下几种参数:
类型参数(Type Parameters):它用来指定泛型类型的占位符,可以是任意标识符,通常用大写字母来表示。例如,List<T> 中的 T 就是一个类型参数。
通配符类型参数(Wildcard Type Parameters):它使用 ? 来表示一种不确定的类型参数,可以用来限制方法参数的类型范围。例如,List<? extends Number> 中的 ? extends Number 就是一个通配符类型参数,表示 List 中的元素必须是 Number 类型或其子类型。
有界类型参数(Bounded Type Parameters):它可以限制泛型类型的取值范围,可以指定上界或下界。例如,<T extends Number> 中的 extends Number 就是一个有界类型参数,表示 T 必须是 Number 类型或其子类型。
泛型数组参数(Generic Array Parameters):它用来指定泛型数组的类型,可以使用类型参数或通配符类型参数。例如,T[] 或 ?[] 都是泛型数组参数。
以上是 Java 泛型中常用的几种参数类型,开发者可以根据自己的需要来选择合适的参数类型来定义泛型类型或方法。
全部评论
相关推荐


美团
| 实习
| 超多精选岗位
点赞 评论 收藏
分享
01-24 14:16
西南财经大学 数据运营 点赞 评论 收藏
分享
01-14 12:08
门头沟学院 Java 点赞 评论 收藏
分享