2012-10-29 60 views
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; 
    } 

    //... 

} 

什麼,我基本上是在做我從鏈表創建SortedLinkedList類,我在那裏有它使用的compareTo添加方法,因爲它們添加到訂單升序排列數據。 因此,當我打電話

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

它創建保存在有序鏈表新的對象。

回答

0

當你實現可比,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); 
    } 
} 
+0

非常感謝您,我明白了! – Tom

3

你讓你的類實現了一個接口,但實際上並沒有實現它的方法。

您或者需要爲User創建一個抽象類(以便其具體的子類將需要實現接口方法)或在User類中實現該方法。

2

您的類聲明爲實現Comparable接口,但它不提供此接口中方法的實現。

您需要爲compareTo(User anotherUser)方法提供實施。例如:

public int compareTo(User anotherUser) { 
    String thisFullName = firstName + lastName; 
    String anotherFullName = anotherUser.getFirstName() + anotherUser.getLastName(); 
    return thisFullName.compareTo(anotherFullName); 
} 
3

當你的類實現一個接口時,它必須實現在那個接口中聲明的方法,而你沒有這樣做。 你必須實現Comparable接口的compareTo(T o)方法。 查看API Comparable。

public class User implements Comparable <User> { 

    public int compareTo(T o){ 

    } 
} 
0

下面是關於Comparable的javadoc。 http://docs.oracle.com/javase/6/docs/api/java/lang/Comparable.html

可比有一個方法簽名:

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 
}