This declaration says, that argument to sort() method must be of a type List<T>,
where T could be any type that implements Comparable<? super T> (sort requires compareTo method defined in Comparable to compare elements of list)
Comparable<? super T> means that type ? passed to Comparable could be T or any supertype of T.
Consider this code:
class A implements Comparable<A>{
private int i = 0;
A(int x){
i = x;
}
@Override
public int compareTo(A o) {
return i - o.i;
}
public String toString(){
return ""+i;
}
}
class B extends A{
B(int x){
super(x + 10);
}
//we don't override compareTo
}
public class Test {
public static void main(String[] args){
List<B> list = new ArrayList<B>();
list.add(new B(3));
list.add(new B(1));
list.add(new B(4));
list.add(new B(2));
Collections.sort(list);//public static <T extends Comparable<? super T>> void sort(List<T> list)1
for(B x : list){
System.out.println(x);
}
}
}
Class B doesn't implement Comparable<B> (and doesn't define it's own compareTo(B b) method).
Class B inherits compareTo(A x) method from class B (we can say that it implements Comparamble<A>).
And sort(List<B>) compiles fine, it is conforming with declaration: public static <B extends Comparable<? super B>> void sort(List<B> list)
分享到:
相关推荐
extends T> 表示这个列表可以包含类型为 T 或 T 的子类型的对象。换句话说,这个列表可以是一个 T 类型的列表,也可以是一个 T 的任何子类型的列表。 2. List<? super T> List<? super T> 表示这个列表可以包含...
经常发现有List<? super T>、Set<? extends T>的声明,是什么意思呢?<? super T>表示包括T在内的任何T的父类,<? extends T>表示包括T在内的任何T的子类,下面我们详细分析一下两种通配符具体的区别。
extends T>表示包括T在内的任何T的子类,下面我们详细分析一下两种通配符具体的区别。 extends List<? extends Number> foo3的通配符声明,意味着以下的赋值是合法的: // Number "extends" Number (in...
泛型类型:定义泛型类型时,使用尖括号<>,并在尖括号中指定类型参数。...例如,public static <T extends Comparable<T>> T max(T[] array)表示一个返回最大元素的泛型方法,且元素类型必须实现Comparable接口。
Java 泛型 super T 中 super 怎么 理解?与 extends 有何不同? - 副本
public void download(String url,String target,AjaxCallBack<File> callback) public void download( String url,AjaxParams params, String target, AjaxCallBack<? extends Object> callback) 附送请求...
<br> }<br>}<br><br>答案::填空第1题<br>x=10,a=3,b=4,c=5<br>填空第2题<br>java.util<br>填空第3题<br>(public )(static )(void)(main)(String args[])<br>填空第4题<br>1<br>填空第5题<br>
public class Circle<T> extends Shape implements Serializable { T m_x, m_y, m_r; public Circle(T x, T y, T r) { ... } ... } public class Stroke<W,T> extends Shape implements Serializable...
<br><br>22、public class ko8_1<br>{<br>public static void main(String args[])<br>{<br>try<br>{ <br>int x[]=new int[-5];<br>System.out.println("此行将无法被执行!");<br>}<br>catch...
<br>}<br>public class Mine extends MineBase {<br> public static void main(String argv[]){<br> int[] ar=new int[5]<br> for(i=0;i<AR.LENGTH;I++)<br> system.out.println(ar[i]);<br> }<br>}<br>1) a ...
1z0-851_formatted Number: 000-000 Passing Score: 800 Time Limit: 120 min File Version: 1.0 Oracle 1z0-851 Java Standard Edition 6 Programmer Certified ... public class MinMax<N extends Integer> {
public List<Map<String, Object>> search(String sql, List<Object> params) throws DaoAccessException { return search(sql, params.toArray()); } @Override public List<Map<String, Object>> search...
sql+=") where rn>?"; List<User> list = getusersBySql(sql, pager.getCurrentPage()*pager.getPageSize(), (pager.getCurrentPage()-1)*pager.getPageSize()); String countSql = "select count(*)...
<br> </td><br> </tr><br> </table><br> <table width=800><br> <tr><br> <td height=1 width=700 bgcolor=gray colspan=2></td><br> </tr><br> </table><br> <table width=800><br> <tr><br> ...
<br>//继承一个类<br>public class Untitled1<br>extends Frame {<br>//构造各种组件<br>TextField t = new TextField(" ");<br>TextField tt = new TextField(" ");<br>Label l = new Label(" 我的计算器");<br>...
static void copyArrayToList(Object[] os,List<T> ls){ //错误,T为类的泛型 } static <E> void copyArrayToList(E[] os,List<E> ls){ //泛型方法,正确的 } 泛型不能使用...
public abstract class AbstractAQuery<T extends AbstractAQuery<T>> implements Constants 模块类,含有AQuery所有方法。 主要方法如: public T find(int id) //查找根容器 public T parent(int id) //返回id容器...
<br>} <br>} <br>public static void main(String arg[]) <br>{ <br>Note nt=new Note(); <br>nt.show(); <br>} <br>public void fileCut_actionPerformed(ActionEvent e) <br>{ <br>fileArea.cut(); <br>} <br>...
〖程序设计基础〗练习题1<br>一、选择题(每题1分,共30分)<br>...<br>public class myprogram extends _______//定义小程序的主类<br>{<br>Label p1;<br>TextField in;<br>public void init()<br>{ p1=new Label("请...