Java泛型中的? super T语法
来源:互联网 发布:棋牌游戏源码交易平台 编辑:程序博客网 时间:2024/05/22 16:54
转自:http://www.blogjava.net/zellux/archive/2007/08/15/136940.html
? super T 语法将泛型类限制为所有T的超类(包括T自身),但只能用于参数中,不可以在返回值用加以限定。
如果不加以限定,假设某个函数头为
? super Manager get()
由于编译器不知道该方法究竟会返回什么类,这样就只能用Object类来接收了。
该语法常用的一个情况是泛型类的比较
java.util.TreeSet<E> 代表一个有序的元素为E的树,它其中的一个构造器需要一个Comparator类来比较两个元素,以E为String类时为例,此时的Comparator可以是Comparator<String>,也可以是Comparator<Object>,但Comparator<Integer>就不行,如何表示这样的限制呢?
jdk源代码中是这样的:
public TreeSet(Comparator<? super E> c)
这样就保证了传给构造器的Comparator是可以进行E元素的比较的。
另一个例子,java.util.Collections的max方法用于获得一个容器中的最大值,这个函数头可以这样写:
public static <T extends Comparable<T>> T max(Collection<T> coll)
public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll) {
Iterator<? extends T> i = coll.iterator();
T candidate = i.next();
while(i.hasNext()) {
T next = i.next();
if (next.compareTo(candidate) > 0)
candidate = next;
}
return candidate;
}
Iterator<? extends T> i = coll.iterator();
T candidate = i.next();
while(i.hasNext()) {
T next = i.next();
if (next.compareTo(candidate) > 0)
candidate = next;
}
return candidate;
}
很严谨的函数头,但是限定方面比较宽
- Java泛型中的? super T语法
- Java泛型中的? super T语法
- Java泛型中的? super T语法
- Java泛型通配符<? extends T>与<? super T>
- Java泛型通配符<? extends T>与<? super T>
- Java泛型通配符<? extends T>与<? super T>
- Java泛型通配符<? extends T>与<? super T>
- Java泛型之<? extends T>和<? super T>
- java generic super/extends (java 泛型中的super/extends)
- 如何理解 Java 中的 <T extends Comparable<? super T>>
- 如何理解 Java 中的 <T extends Comparable<? super T>>
- 如何理解 Java 中的 <T extends Comparable<? super T>>
- java泛型中的extends和super
- java泛型中的extends和super
- java泛型中的extends super再解
- JAVA 泛型中的extends和super
- Java学习之道:简述泛型通配符<? extends T>和<? super T>
- 浅谈Java泛型之<? extends T>和<? super T>的区别
- OGNL表达式
- 《那些年啊,那些事——一个程序员的奋斗史》——46
- ECM企业内容管理系统的重要性
- Virtual Box上虚拟机的导入和导出
- 用VBA解决了一个小问题,很开心
- Java泛型中的? super T语法
- Struts2内建拦截器的简要介绍
- asp.net中图片的上传与显示
- session的工作原理
- Android开发中遇到的问题
- WindowsAzure 之AppFabricCache
- 时间复杂度计算
- C++沉思录读书笔记(25,26章)- 库设计与语言设计
- 找回win7桌面IE图标我有绝招