相当于C++里的模板
特点
声明的时候使用了泛型但是实例化的时候不用的话,这个类型的值都会是Object类型,然后就可以什么都可以传,但是想要用传入类型的特有方法的话就要强制转换之后再用。
•
基本类型不能用,用包装类。例:int用Integer。
类泛型
声明: class 类名 <E>{}
使用: 类名 <string> 实例名 = new 类名<>();
方法泛型
声明: public <E> E 方法名(E e){} //<>加在返回值声明的前面。声明了<E> 也可以不使用这一类型。
使用: 方法名(参数) //自动根据参数类型设置E,即跟调用正常方法一样。
多个泛型<K , V>
泛型嵌套<Map<String,String>,Integer> ,只有使用的时候。
<? super E> 表示要是E的父类
<? extend E>
boolean addAll(Collection<? extends E> c)
//例子:TreeSet类的部分源码。
评论区