【问题标题】:The type Email must implement the inherited abstract method Comparable.compareTo(Object)类型 Email 必须实现继承的抽象方法 Comparable.compareTo(Object)
【发布时间】:2012-04-27 03:02:56
【问题描述】:

它给出了这些错误 类型 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());
        }
    }

}

如何解决?

【问题讨论】:

    标签: java comparator


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您让Email 实现了Comparable 接口。要么不要实现它——如果你提供各种比较器,这是完全合理的做法——或者直接在Email 类中实现compareTo 方法,使用一些明智的“自然排序”。

      【讨论】:

        【解决方案3】:

        将您的班级签名更改为:

        public class Email implements Comparable<Email>, Serializable
        

        并实现可比较的方法:

        public int compareTo(Email otherEmail)
        

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-12
          • 1970-01-01
          • 2012-08-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多