欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于泛型的一些问题

程序员文章站 2024-03-14 18:32:16
...

泛型的作用

  1. 使用泛型的类可以适应更加广泛的类型,制作的工具类能够适配更多的类型。
  2. 在集合中使用泛型能够在编码阶段实现类型检查,防止类型转换错误。

泛型采用的方法:

	类型擦除

为什么使用类型擦除?

	为了向前兼容,兼容JDK1.5之前的Java类库。

泛型常见类型及解析(大多数使用在集合当中)

  1. 字母型(一般用在编写工具类或者接口中):
    List<E> 、Map<K,V>等英文字母,字母可以随意定。

常见的字母含义:
T Type表示类型
K V 分辨表示键值对中的key value
E 代表Element

public interface List<E> extends Collection<E>

public interface Map<K,V>

public class Child<E> { //可以在类名后面声明泛型
    public <T> E get(T type){//也可以在方法前面声明泛型
        return null;
    }
}
  1. 通配符类型(一般用在实例化泛型类的时候):
    List<?>
List<?> list = new ArrayList<>();
Apple apple = new Apple();
list.add(apple);//当使用通配符的List第一次放入Apple对象后,该List就会被确定为Apple类型
				//触发类型检查机制,后续只能存入Apple类型的对象,否则无法通过编译器编译
  1. 上界通配符<? extends A>和下界通配符<? super B>
class Fruit;
class Apple extends Fruit;

List<Apple> apples = new ArrayList<>();
List<Fruit> fruits = apples;//报错
List<? extends Fruit> fruits = apples;//编译通过

List<Fruit> fruits = new ArrayList<>();
List<Apple> apples = fruits;//报错
List<? super Apple> apples = fruits;//编译通过
<? extends A>可以将A的任一子类类型放入到集合中。
<? super B>可以将B的任一父类类型放入到集合中。
相关标签: 泛型

上一篇: B. Box Fitting

下一篇: