2

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

虽然我有

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());
        }
    }

}

怎么修?

4

3 回答 3

2

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

于 2012-04-27T03:05:12.197 回答
1

你已经Email实现了Comparable接口。要么实现它——如果你提供各种比较器,这是一件非常合理的事情——或者compareTo直接在Email类中实现该方法,并带有一些合理的“自然顺序”。

于 2012-04-27T03:06:24.817 回答
0

将您的班级签名更改为:

public class Email implements Comparable<Email>, Serializable

并实现可比较的方法:

public int compareTo(Email otherEmail)

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

于 2012-04-27T03:07:17.930 回答