日期:2014-05-20  浏览次数:20847 次

接口方法的重写的规则问题
import java.util.*;
import java.awt.*;
class Students implements Comparable
{ int english;
  String name;
  Students(int english,String name)
  { this.english=english;
this.name=name;  
  }
  public int compareTo(Object b)
  { System.out.println("第一次");
Students st=(Students)b;
System.out.println(this.english-st.english);
return (this.english-st.english);  
 
 
  }
}

public class TreeSetExa 
{

  public static void main(String[] args) 
  { TreeSet<Students> mytree=new TreeSet<Students>(new Comparator<Object>() 
  { public int compare(Object a,Object b)
  { System.out.println("第二次");
  Students stu1=(Students)a;
  System.out.println(stu1.english+"english的成绩");
  Students stu2=(Students)b;
  System.out.println(stu2.english+"english的成绩");
  return stu1.compareTo(stu2);
  }
  });
  Students st1,st2,st3,st4;
  st1=new Students(90,"甲");
  st2=new Students(91,"乙");  
  st3=new Students(86,"丙");
  st4=new Students(76,"丁");
  mytree.add(st1);
  System.out.println("第三次");
  mytree.add(st2);
  mytree.add(st3);
  mytree.add(st4);
  Iterator te=mytree.iterator();
  while(te.hasNext())
  { Students stu=(Students)te.next();
  System.out.println(""+stu.name+" "+stu.english);
  }
  }

}

上面的程序是把一个对象的集合按成绩排序,在树集的的实例中传递了一个接口类型的匿名对象,这个匿名对象可以看做是实现了接口的的类,为什么这儿只实现了Comparator一个接口方法,
public int compare(Object a,Object b),而另一个接口方法Booleann equals(Object obj) 没有实现也能运行????

------解决方案--------------------
不好意思,没看到。

既然是匿名类,也就是它是一个类,而所有类都有继承一个超类object,对不?
object是不是已经实现了equals?