八、泛型
1.在集合中使用泛型
Map
Map<String,Integer> map = new HashMap<>();
map.put("AA",33);
List
List<Integer> list = new ArrayList<Integer>()
list.add(78);
Iterator<Integer> it = list.iterator();
while(it.hasNext()){
sysout(it.next());
}
entry
Set<Map.entry<String,Integer>> set = map.entrySet();
for(Map.Entry<String,Integer> o : set){
sysout(o.getKey() + "--->" +o.getValue());
}
2.自定义泛型类、泛型接口、泛型方法
1.当实例化泛型类的对象时,指明泛型的类型
指明之后,对应的类中所有使用泛型的位置,都变为实例化中指定的泛型的类型
2.如果我们自定义了泛型类,但是在实例化时没有使用,那么默认类型是Object类的
继承泛型类或泛型接口时,可以指明泛型的类型
private T t;
List<T> list = new ArrayList<>();
自定义泛型类的使用:
Order<Boolean> order = new Order<Boolean>();
声明泛型方法
public <E> E getE(E e){
return e;
}
//当通过对象调泛型方法时,指明泛型方法的类型
调用泛型方法
Integer i = order.getE(34);
Double d= order.getE(2.3);
自定义泛型类
泛型类注意点
泛型类
1.静态方法中不能使用类的泛型
2.如果泛型类是一个接口或抽象类,则不能创建泛型类的对象。
3.不能在catch中使用泛型
4.从泛型类派生子类,泛型类型需具体化
把一个集合中的内容限制为一个特定的数据类型。
3.泛型与继承的关系
4.通配符
? extends A:可以存放A及其子类
? super A:可以存放A及其父类
注意: