我在用户类中一直收到此错误:
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添加方法,在添加时按升序对数据进行排序。 所以当我打电话时
User user1= new User("Dan", "Hill", 0);
SortedLinkedList LibraryUser = new SortedLinkedList();
LibraryUser.add(user1);
它创建保存在已排序链接列表中的新对象。
答案 0 :(得分:3)
你让你的类实现了一个接口,但实际上没有实现它的方法。
您需要使User成为一个抽象类(以便它的具体子类需要实现接口方法)或在User类中实现该方法。
答案 1 :(得分:3)
当你的类实现一个接口时,它必须实现在那个接口中声明的方法,你没有这样做。 你必须实现Comparable接口的compareTo(T o)方法。 查看可比较的API。
public class User implements Comparable < User > {
public int compareTo(T o){
}
}
答案 2 :(得分: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 :(得分:0)
这是Comparable上的javadoc。 http://docs.oracle.com/javase/6/docs/api/java/lang/Comparable.html
Comparable有一个方法签名:
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
}
答案 4 :(得分: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);
}
}