2012-04-27 12 views
2

これらのエラーを返します 型Emailは継承した抽象メソッドを実装する必要がありますComparable.compareTo(Object) 型Email.DateComparatorは継承した抽象メソッドComparator.compare(オブジェクト、オブジェクト) はタイプEmail.SubjectComparatorが継承された抽象メソッドComparator.compare(オブジェクト、オブジェクト)を実装する必要があります電子メールは継承した抽象メソッドを実装する必要があります。

私が持っているが

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)メソッドを実装します。引数をEmailにキャストします。実装済み

1

Emailは、Comparableインターフェイスを実装しています。 を実装しないでください。様々なコンパレータを提供している場合は、完全に合理的なことです。具体的には、EmailクラスにcompareToメソッドを実装し、賢明な「自然順序付け」を実装してください。あなたが最初の場所でクラスが同等にするために意図していること、

public int compareTo(Email otherEmail) 

これは当然想定している:

0
はにあなたのクラス署名を変更

public class Email implements Comparable<Email>, Serializable 

と同等のメソッドを実装します。現在のところ、何らかの理由でクラスに定義された入れ子コンパレータがあります。

関連する問題