它给出了这些错误 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());
}
}
}
如何解决?
答案 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)
当然,这是假设您打算首先使该课程具有可比性。目前,无论出于何种原因,您都在类中定义了嵌套比较器。