JavaSE基础笔记十

第八章 泛型


1.泛型在集合中的使用

2.自定义泛型类、泛型接口、反省方法

3.泛型与继承的关系

4.通配符


1.在集合中不使用泛型 

①没使用泛型,任何Object以及其子类的对象都可以添加集合

②强转数据类型时,可能会出现ClassCastException的异常

2.在集合中使用泛型

例:

public void test(){

List<Interger>list = new ArrayList<Integer>();

list.add(66);

list.add(88);

Iterator<Integer> it = list.iterator();

while(it.hasNext()){

System.out.println(it.next());

}

}


public void test1(){

Map<String,Integer> map = new HashMap<>();

map.put("AA",88);

map.put("BB",66);

map.put("CC",77);


Set<Map.Entry<String.Integer>> set = map.entrySet();

for(Map.Entry<String.Integer> o : set){

System.out.println(o.getKey+o.getValue());

}

}

3.自定义泛型类

注意点:

1.对象实例化时不指定泛型,默认为:Object

2.泛型不同的引用不能相互赋值

3.加入集合中的对象类型必须与指定的泛型类型一致

4.如果泛型类是一个接口或抽象类,则不可创建泛型类的对象

6.不能再catch中使用泛型

7.从泛型类派生子类,泛型类型需具体化


4.泛型与继承的关系

A类是B类的子类,G是带泛型声明的类或接口,那么G<A>不是G<B>的子类


5.通配符

A类是B类的子类,G是带泛型声明的类或接口,则G<?>是G<A>、G<B>的父类

①以List<?>为例,能读取其中的数据,因为不管储存的是什么类型的元素,其一定是Object类的或者其子类

②以List<?>为例,不可以向其中写入数据,因为没有指明可以存放到其中的元素的类型,唯一例外是:null


6.List< ? extends A> :可以将List<A>的对象或List<B>的对象赋给List< ? extends A>。其中B是A的子类

   ?super A:可以将List<A>的对象或List<B>的对象赋给List< ? extends A> ,其中B是A的父类。



本文出自 “阿成的博客” 博客,转载请与作者联系!

你可能感兴趣的:(接口,object,通配符,public)