通配符,泛型的限定
来源:互联网 发布:全局session 丢失数据 编辑:程序博客网 时间:2024/05/17 08:27
泛型通配符:
public class GenericDemo7 {public static void main(String[] args) {List<Student> list = new ArrayList<Student>();list.add(new Student("abc1",20));list.add(new Student("abc2",21));list.add(new Student("abc3",22));list.add(new Student("abc4",23));printCollection(list);Set<Work> set = new HashSet<Work>();set.add(new Work("sssii",14));set.add(new Work("abc",19));set.add(new Work("cba",20));printCollection(set);}private static void printCollection(Collection<?> coll) {//在不明确具体类型的情况下,可以使用通配符来表示for (Iterator<?> it = coll.iterator(); it.hasNext();) {Object obj = it.next();System.out.println(obj);}}}
泛型的限定:
? extends Person 泛型的上限
? super Person 泛型的下限
public class GenericDemo7 {public static void main(String[] args) {List<Student> list = new ArrayList<Student>();list.add(new Student("abc1",20));list.add(new Student("abc2",21));list.add(new Student("abc3",22));list.add(new Student("abc4",23));printCollection(list);Set<Work> set = new HashSet<Work>();set.add(new Work("sssii",14));set.add(new Work("abc",19));set.add(new Work("cba",20));printCollection(set);}/* * 泛型的限定: * ? extends E :接收E类型或者E的子类型。 泛型的上限 * ? super E :接收E类型或者E的父类型。 泛型的下限 */private static void printCollection(Collection<?extends Person> coll) {//在不明确具体类型的情况下,可以使用通配符来表示for (Iterator<?extends Person> it = coll.iterator(); it.hasNext();) {Person p = it.next();System.out.println(p);}}}
public class GenericDemo8 {public static void main(String[] args) {/* * 演示泛型限定在API中的体现 * TreeSet的构造方法 * TreeSet(Collection<? extends E> coll) * 什么时候用到上限呢? * 一般往集合存储元素时,如果集合定义了E类型通常情况下应该存储E类型的对象。 * 对于E的子类型的子对象B类型的对象B也可以接受,所以这时可以将泛型从E改为? extends E. */Collection<Student> coll = new ArrayList<Student>();coll.add(new Student("xiaoming",25));coll.add(new Student("dabao",15));coll.add(new Student("lala",65)); Collection<Work> wo = new ArrayList<Work>();wo.add(new Work("宝宝1",12));wo.add(new Work("宝宝2",12));wo.add(new Work("宝宝3",12));TreeSet<Person> ts = new TreeSet<Person>(coll);ts.addAll(wo);for (Iterator<Person> it = ts.iterator(); it.hasNext();) {Person person = it.next();System.out.println(person);}}}
泛型的下限:
public class GenericDemo9 {public static void main(String[] args) {/* * 演示泛型限定在API中的体现 * TreeSet的构造方法 * TreeSet(Collection<? super E> coll) * 什么时候用到下限呢? * 当从容器中取出元素操作时,可以用E类型接受,也可以用E的父类型接受 *///创建一个比较器Comparator<Person> comp = new Comparator<Person>(){@Overridepublic int compare(Person o1, Person o2) {int temp = o1.getAge()-o2.getAge();return temp==0?o1.getName().compareTo(o2.getName()):temp;}};TreeSet<Student> ts = new TreeSet<Student>(comp);ts.add(new Student("xiaoming",25));ts.add(new Student("dabao",15));ts.add(new Student("lala",65)); TreeSet<Work> tsl = new TreeSet<Work>(comp);tsl.add(new Work("lihua",23));tsl.add(new Work("xxx",10));tsl.add(new Work("niuniu",21));for (Iterator<Work> it = tsl.iterator(); it.hasNext();) {Work student = it.next();System.out.println(student);}}}
0 0
- 通配符,泛型的限定
- 泛型类、泛型方法、通配符泛型、通配符的超类型限定
- java泛型程序设计——通配符类型+通配符的超类型限定
- 泛型类型限定和通配符类型限定
- Java泛型解析(02):通配符限定
- Java基础 通配符?+泛型限定
- Java泛型通配符以及限定
- Java泛型 通配符的限定
- java 之 泛型的通配符 和 泛型的限定
- java 泛型之 通配符的限定 之 extends 的实例
- java 泛型之 通配符的限定 之 super 的实例
- 关于泛型通配符与泛型限定
- 07 08-泛型-泛型限定(上限和下限) 09 10-泛型限定(上限的体现和下限的体现1 2) 11-泛型限定(通配符的体现) 12-集合查阅的技巧)
- 黑马程序员--Java基础加强--06.【泛型通配符限定】【个人总结】
- 泛型(Generic):了解泛型、泛型的应用、?通配符和泛型的限定、泛型方法和类型推断、泛型类、用反射获得实际
- Java 泛型的限定
- Java 泛型的限定
- 泛型通配符?的用法
- android事件分发机制
- NSRunLoop 和 NSTimer
- 关于dg,备库日志已经应用,但主库依旧显示applied=no问题的处理
- 帮助文档打开没内容,如果确定不是文件坏了,那就是...
- Android pendingIntent理解
- 通配符,泛型的限定
- sqlserver字段类型解释
- map 和 hash_map 的使用方法
- Recycle view局部刷新
- 测试基础 – 测试用例
- 中文乱码在java中URLEncoder.encode方法要调用两次解决
- Parcelable encountered IOException writing serializable object 解决方法
- lightoj 1021 - Painful Bases
- Filter过滤器的使用,实现在规定时间内过滤请求