Email类型必须实现继承的抽象方法Comparable.compareTo(Object)

时间:2012-04-27 03:02:56

标签: java comparator

它给出了这些错误 Email类型必须实现继承的抽象方法Comparable.compareTo(Object) Email.DateComparator类型必须实现继承的抽象方法Comparator.compare(Object,Object) Email.SubjectComparator类型必须实现继承的抽象方法Comparator.compare(Object,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());
        }
    }

}

如何解决?

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

您已Email实施Comparable界面。 实现它 - 如果你提供各种比较器,那么这是完全合理的事情 - 或直接在compareTo中实现Email方法阶级,有一些明智的“自然顺序”。

答案 2 :(得分:0)

将您的班级签名更改为:

public class Email implements Comparable<Email>, Serializable

并实施可比较的方法:

public int compareTo(Email otherEmail)

当然,这是假设您打算首先使该课程具有可比性。目前,无论出于何种原因,您都在类中定义了嵌套比较器。