2012-04-27 4 views
2

Он дает эти ошибки Тип Email должен реализовать унаследованный абстрактный метод Comparable.compareTo (Object) Тип Email.DateComparator должен реализовывать унаследованный абстрактный метод Comparator.compare (Object, Object) Тип Email.SubjectComparator должен реализовать унаследовали абстрактный метод Comparator.compare (Object, Object)Тип 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. Либо не выполняет. Это разумно, если вы предоставляете множество компараторов - или реализуете метод compareTo непосредственно в классе Email с некоторым разумным «естественным заказом».

0

Изменить класс подпись:

public class Email implements Comparable<Email>, Serializable 

и реализовать сравнимый метод:

public int compareTo(Email otherEmail) 

Это предполагает, конечно, что вы имели в виде, чтобы сделать класс сопоставимым в первую очередь. В настоящее время у вас есть вложенные компараторы, определенные в классе по любой причине.

Смежные вопросы