Java 可比的

Java 可比的,java,comparable,compareto,Java,Comparable,Compareto,我有个问题。我有一个类,它扩展了另一个类并实现了Comparable。但当我试图编译我的程序时,我有一个错误:Flight不是抽象的,也不会覆盖抽象方法compareTo。无论如何,飞行代码是这样的: class Flight extends KeyFlight implements Comparable<Flight>{ public KeyFlight kf; public boolean departure; public void Flight(){ KeyFli

我有个问题。我有一个类,它扩展了另一个类并实现了Comparable。但当我试图编译我的程序时,我有一个错误:Flight不是抽象的,也不会覆盖抽象方法compareTo。无论如何,飞行代码是这样的:

class Flight extends KeyFlight implements Comparable<Flight>{

 public KeyFlight kf;
 public boolean departure;

 public void Flight(){
 KeyFlight kf=new KeyFlight();
 boolean departure=false;
 }

 public int compareTo(KeyFlight other){
  if (kf.time==other.time){
  if (kf.key<other.key){
   return kf.key;
  } else {
   return other.key;
  } 
 } else {
  if (kf.time <other.time){
   return kf.key;
  } else {
   return other.key;
  }  
 }
}
}
class Flight扩展了KeyFlight工具{
公钥飞行kf;
公众假期;
公共航班(){
KeyFlight kf=新的KeyFlight();
布尔偏差=假;
}
公共内部比较(KeyFlight其他){
if(kf.time==其他时间){

如果(kf.key我认为compareTo的参数类型是错误的,那么它应该是错误的

public int compareTo(Flight other){
public void Flight(){
    kf=new KeyFlight();
你应该使用

implements Comparable<KeyFlight>
否则,您将在将来获得NullPointerException。这同样适用于您的离开布尔值


另一个注意事项是,java boolean中的默认值被初始化为false,因此您不必在构造函数中明确表示。

类中的
compareTo
方法不是有效的重写,因为您定义了类实现
Comparable
,所以为了在类中重写此方法,您需要更改其他从
键飞行
飞行
的可变类型

 @Override
 public int compareTo(Flight o) {
  //your logic here
 }

因此,在哪个类中实现Comparable确实很重要。它比较什么很重要?谢谢你,它编译成功了!是的。请看[这个](docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html),它说
Comparable
,在方法摘要中说
compareTo(to)
。观察它们是一样的。
 @Override
 public int compareTo(Flight o) {
  //your logic here
 }