`
loveIvy
  • 浏览: 13478 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

public static <T extends Comparable<? super T>> void sort(List<T> list)

 
阅读更多

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)

分享到:
评论

相关推荐

    Java中List<? extends T>与List<? super T>的区别(值得珍藏)

    extends T&gt; 表示这个列表可以包含类型为 T 或 T 的子类型的对象。换句话说,这个列表可以是一个 T 类型的列表,也可以是一个 T 的任何子类型的列表。 2. List&lt;? super T&gt; List&lt;? super T&gt; 表示这个列表可以包含...

    泛型中? super T和? extends T的区别

    经常发现有List&lt;? super T&gt;、Set&lt;? extends T&gt;的声明,是什么意思呢?&lt;? super T&gt;表示包括T在内的任何T的父类,&lt;? extends T&gt;表示包括T在内的任何T的子类,下面我们详细分析一下两种通配符具体的区别。

    Java泛型中? super T和? extends T的区别

    extends T&gt;表示包括T在内的任何T的子类,下面我们详细分析一下两种通配符具体的区别。  extends  List&lt;? extends Number&gt; foo3的通配符声明,意味着以下的赋值是合法的:  // Number "extends" Number (in...

    java泛型总结.docx

    泛型类型:定义泛型类型时,使用尖括号&lt;&gt;,并在尖括号中指定类型参数。...例如,public static &lt;T extends Comparable&lt;T&gt;&gt; T max(T[] array)表示一个返回最大元素的泛型方法,且元素类型必须实现Comparable接口。

    Java 泛型 super T 中 super 怎么 理解?与 extends 有何不同? - 副本.md

    Java 泛型 super T 中 super 怎么 理解?与 extends 有何不同? - 副本

    android好用的框架(封装了数据库,注解,网络,图片缓存的框架)

    public void download(String url,String target,AjaxCallBack&lt;File&gt; callback) public void download( String url,AjaxParams params, String target, AjaxCallBack&lt;? extends Object&gt; callback) 附送请求...

    Java测试题2答案

    &lt;br&gt; }&lt;br&gt;}&lt;br&gt;&lt;br&gt;答案::填空第1题&lt;br&gt;x=10,a=3,b=4,c=5&lt;br&gt;填空第2题&lt;br&gt;java.util&lt;br&gt;填空第3题&lt;br&gt;(public )(static )(void)(main)(String args[])&lt;br&gt;填空第4题&lt;br&gt;1&lt;br&gt;填空第5题&lt;br&gt;

    JDK 1.5的泛型實現(Generics in JDK 1.5)

    public class Circle&lt;T&gt; extends Shape implements Serializable { T m_x, m_y, m_r; public Circle(T x, T y, T r) { ... } ... } public class Stroke&lt;W,T&gt; extends Shape implements Serializable...

    Java测试题3答案

    &lt;br&gt;&lt;br&gt;22、public class ko8_1&lt;br&gt;{&lt;br&gt;public static void main(String args[])&lt;br&gt;{&lt;br&gt;try&lt;br&gt;{ &lt;br&gt;int x[]=new int[-5];&lt;br&gt;System.out.println("此行将无法被执行!");&lt;br&gt;}&lt;br&gt;catch...

    Java测试题1答案

    &lt;br&gt;}&lt;br&gt;public class Mine extends MineBase {&lt;br&gt; public static void main(String argv[]){&lt;br&gt; int[] ar=new int[5]&lt;br&gt; for(i=0;i&lt;AR.LENGTH;I++)&lt;br&gt; system.out.println(ar[i]);&lt;br&gt; }&lt;br&gt;}&lt;br&gt;1) a ...

    ocjp题库 1z0-851

    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&lt;N extends Integer&gt; {

    springmvc-jdbcTemplate

    public List&lt;Map&lt;String, Object&gt;&gt; search(String sql, List&lt;Object&gt; params) throws DaoAccessException { return search(sql, params.toArray()); } @Override public List&lt;Map&lt;String, Object&gt;&gt; search...

    北大青鸟第二单元项目

    sql+=") where rn&gt;?"; List&lt;User&gt; list = getusersBySql(sql, pager.getCurrentPage()*pager.getPageSize(), (pager.getCurrentPage()-1)*pager.getPageSize()); String countSql = "select count(*)...

    struts 标签 logic:iterate使用 logic:iterate

    &lt;br&gt; &lt;/td&gt;&lt;br&gt; &lt;/tr&gt;&lt;br&gt; &lt;/table&gt;&lt;br&gt; &lt;table width=800&gt;&lt;br&gt; &lt;tr&gt;&lt;br&gt; &lt;td height=1 width=700 bgcolor=gray colspan=2&gt;&lt;/td&gt;&lt;br&gt; &lt;/tr&gt;&lt;br&gt; &lt;/table&gt;&lt;br&gt; &lt;table width=800&gt;&lt;br&gt; &lt;tr&gt;&lt;br&gt; ...

    JAVA编写计算器

    &lt;br&gt;//继承一个类&lt;br&gt;public class Untitled1&lt;br&gt;extends Frame {&lt;br&gt;//构造各种组件&lt;br&gt;TextField t = new TextField(" ");&lt;br&gt;TextField tt = new TextField(" ");&lt;br&gt;Label l = new Label(" 我的计算器");&lt;br&gt;...

    \java超强笔记(超级经典)

    static void copyArrayToList(Object[] os,List&lt;T&gt; ls){ //错误,T为类的泛型 } static &lt;E&gt; void copyArrayToList(E[] os,List&lt;E&gt; ls){ //泛型方法,正确的 } 泛型不能使用...

    android-query 开发包

    public abstract class AbstractAQuery&lt;T extends AbstractAQuery&lt;T&gt;&gt; implements Constants 模块类,含有AQuery所有方法。 主要方法如: public T find(int id) //查找根容器 public T parent(int id) //返回id容器...

    JI记事本

    &lt;br&gt;} &lt;br&gt;} &lt;br&gt;public static void main(String arg[]) &lt;br&gt;{ &lt;br&gt;Note nt=new Note(); &lt;br&gt;nt.show(); &lt;br&gt;} &lt;br&gt;public void fileCut_actionPerformed(ActionEvent e) &lt;br&gt;{ &lt;br&gt;fileArea.cut(); &lt;br&gt;} &lt;br&gt;...

    程序设计基础答案

    〖程序设计基础〗练习题1&lt;br&gt;一、选择题(每题1分,共30分)&lt;br&gt;...&lt;br&gt;public class myprogram extends _______//定义小程序的主类&lt;br&gt;{&lt;br&gt;Label p1;&lt;br&gt;TextField in;&lt;br&gt;public void init()&lt;br&gt;{ p1=new Label("请...

Global site tag (gtag.js) - Google Analytics