通配符泛型

“?” - 代表未知类型

extends - 关键字声明了类型的上界,表示参数化的类型可能是所指定的类型,或者是此类型的子类

super - 关键字声明了类型的下界,表示参数化的类型可能是所指定的类型,或者是此类型的父类型,直至Object

--->带有泛型的.java文件,只有被编译成.class文件后类型才能被确定:

 

clip_image001 List<? extends Date> listEx = new ArrayList<Timestamp>();

listEx.add(new Timestamp(System.currentTimeMillis())); //出错,无法确定类型, 考虑到安全性,什么都不能加入

Date date = listEx.get(1); //正确,Date作为父类可以引用子类

clip_image001[1] List<? super Date> listSu = new ArrayList<Object>();

listSu.add(new Date()); //类型不确定,只能加入Date,就算是Object也不能加入, 因为不能保证Object一定是Date的父类

Date date = listSu.get(1); //出错,Date作为子类,不能引用其父类(虽然类型未知)

posted @ 2014-01-22 09:26  空姐在巴黎  阅读(198)  评论(0编辑  收藏  举报