3

ユーザークラスでこのエラーが発生し続けます:

User is not abstract and does not override abstract method compareTo(User) in Comparable

それが何を意味するのか、それを機能させるために何をすべきかわかりません。私は他の同様の投稿を見ましたが、ほとんどの場合、他の誰かのコードに固有であるため、応答を本当に理解していません。必要に応じて、私がやろうとしていることについての詳細情報を提供できます。

public class User implements Comparable < User > {

    private String firstName;
    private String surname;
    private int booksOut;

    User(String inFirstName, String inSurname, int inBooksOut){
        this.firstName = inFirstName;
        this.surname = inSurname;
        this.booksOut = inBooksOut;
    }

    //...

}

私が基本的に行っていることは、LinkedListからSortedLinkedListクラスを作成しており、そこにcompareToを使用するaddメソッドがあり、データが追加されるにつれて昇順で並べ替えられます。だから私が電話するとき

 User user1= new User("Dan", "Hill", 0); 
SortedLinkedList LibraryUser = new SortedLinkedList(); 
LibraryUser.add(user1);  

ソートされたリンクリストに保存される新しいオブジェクトを作成します。

4

5 に答える 5

3

クラスにインターフェースを実装させましたが、実際にはそのメソッドを実装していません。

User を抽象クラスにする (その具体的なサブクラスがインターフェイス メソッドを実装する必要があるようにする) か、User クラスにメソッドを実装する必要があります。

于 2012-10-29T19:57:50.873 に答える
3

クラスがインターフェースを実装する場合、そのインターフェースで宣言されたメソッドを実装する必要がありますが、これは行っていません。Comparable インターフェイスの compareTo(T o) メソッドを実装する必要があります。ComparableのAPIを見てください。

public class User implements Comparable < User > {

   public int compareTo(T o){

    }
}
于 2012-10-29T19:58:31.857 に答える
2

クラスはインターフェイスを実装するように宣言されComparableていますが、このインターフェイスのメソッドの実装を提供していません。

メソッドの実装を提供する必要がありますcompareTo(User anotherUser)。例えば:

public int compareTo(User anotherUser) {
    String thisFullName = firstName + lastName;
    String anotherFullName = anotherUser.getFirstName() + anotherUser.getLastName();
    return thisFullName.compareTo(anotherFullName);
}
于 2012-10-29T19:57:57.490 に答える
0

Comparable の javadoc は次のとおりです。 http://docs.oracle.com/javase/6/docs/api/java/lang/Comparable.html

Comparable には 1 つのメソッド シグネチャがあります。

public int compareTo(T object);

このコードをユーザー クラスに追加して、機能させます。

public int compareTo(User u) {
// code to compare this user with u
// i'd recommend comparing the last names, then the first names
}
于 2012-10-29T20:02:58.203 に答える
0

Comparable を実装すると、Java は compareTo の実装を探します。

例えば:

(簡単にするために変数を公開したことに注意してください)

public class User implements Comparable < User > {

    public String firstName;
    public String surname;
    public int booksOut;

    User(String inFirstName, String inSurname, int inBooksOut){
        this.firstName = inFirstName;
        this.surname = inSurname;
        this.booksOut = inBooksOut;
    }

    public int compareTo(User cmp) {
        int fnCmp = firstName.compareTo(cmp.firstName);
        if (fnCmp != 0) return(fnCmp);
        int snCmp = surname.compareTo(cmp.surname);
        if (snCmp != 0) return(snCmp);
        return(cmp.booksOut-booksOut);
    }   
}
于 2012-10-29T20:05:58.420 に答える