2012-04-27 124 views
2

它给出这些错误 类型Email必须实现继承的抽象方法Comparable.compareTo(Object) 类型Email.DateComparator必须实现继承的抽象方法Comparator.compare(对象,对象) 类型Email.SubjectComparator必须实现继承的抽象方法Comparator.compare(对象,对象)Email类型必须实现继承的抽象方法Comparable.compareTo(Object)

虽然我有

public class Email implements Comparable, Serializable 
{ 
... 

    public static class DateComparator implements Comparator 
    { 
     public int compare(Email email1, Email email2) 
     { 
      return email1.getTimestamp().compareTo(email2.getTimestamp()); 
     } 
    } 

    public static class SubjectComparator implements Comparator 
    { 
     public int compare(Email email1, Email email2) 
     { 
      return email1.getSubject().compareTo(email2.getSubject()); 
     } 
    } 

} 

如何解决?

回答

2

执行Comparator.compare(Object,Object)方法。将参数转换为电子邮件。您实现了Comparator.compare(电子邮件,电子邮件)

1

你有Email实现Comparable接口。或者不需要实现它 - 如果您提供各种比较器 - 或者在Email类中直接实施compareTo方法,那么采用一些合理的“自然排序”是一个非常合理的做法。

0

类的签名更改为:

public class Email implements Comparable<Email>, Serializable 

并实现可比方法:

public int compareTo(Email otherEmail) 

这是假设当然,前提是你的意思是使课堂摆在首位媲美。目前,无论出于何种原因,您都在类中定义了嵌套比较器。

相关问题