8.Java泛型

8.Java泛型

1.泛型在集合中的使用(掌握)

2.自定义泛型类、泛型接口、泛型方法(理解 --->使用)

3.泛型与继承的关系

4.通配符

1.在集合中不使用泛型

public void test1(){

List list = new ArrayList();

list.add(89);

list.add(87);

list.add(67);

//1.没有使用泛型,任何Object及其子类的对象都可以添加进来

list.add(new String("AA"));

for(int i = 0;i < list.size();i++){

//2.强转为int型时,可能报ClassCastException的异常

int score = (Integer)list.get(i);

System.out.println(score);

}

}

2.在集合中使用了泛型

public void test2(){

List<integer> list = new ArrayList<integer>();/<integer>/<integer>

list.add(78);

list.add(87);

// list.add("AA");

// for(int i = 0;i < list.size();i++){

// int score = list.get(i);

// System.out.println(score);

// }

Iterator<integer> it = list.iterator();/<integer>

while(it.hasNext()){

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

}

}

public void test3(){

Map<string> map = new HashMap<>();/<string>

map.put("AA", 78);

map.put("BB", 87);

map.put("DD", 98);

Set<map.entry>> set = map.entrySet();/<map.entry>

for(Map.Entry<string> o : set){/<string>

System.out.println(o.getKey() + "--->" + o.getValue());

}

}

3.自定义泛型类:应用

public class DAO

{

public void add(T t){

//....

}

public T get(int index){

return null;

}

public List getForList(int index){

return null;

}

public void delete(int index){

}

}

public class CustomerDAO extends DAO<customer>{/<customer>

}

public class TestCustomerDAO {

public static void main(String[] args) {

CustomerDAO c = new CustomerDAO();

c.add(new Customer());

c.get(0);

}

}

【注意点】

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

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

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

4.静态方法中不能使用类的泛型。

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

类的对象。

6.不能在catch中使用泛型

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

4.泛型与继承的关系

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

5.通配符:?

A类是B类的子类,G是带泛型声明的类或接口。则G> 是G

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

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

6*. List :可以将List

? super A:可以将List


分享到:


相關文章: