首先,我想提一下,我承认有关此错误的相同标题的问题,但我无法使用现有答案解决我的问题。
我的程序很简单。该计划可以按名称或学生的登记日期对学生进行排序。
造成问题的行是"公共类学生实施比较器。" 它给出了Error" Student1.Student不是抽象的,并且不会覆盖java.util.Comparator中的抽象方法比较(Student1.Student,Student1.Student)"
package Student1;
import java.util.Date;
import java.util.*;
import java.util.ArrayList;
public class Student implements Comparator<Student> {
String name;
Date whenEnrolled;
Student(String name, Date whenEnrolled){
this.name = name;
this.whenEnrolled = whenEnrolled;
}
/**
* get a student's name
* @return name of a student
*/
public String getName(){
return name;
}
/**
* get a enrolled date of a student
* @return enrolled date of a student
*/
public Date getEnrolledDate(){
return (Date)whenEnrolled.clone();
}
/**
*
* @return
*/
public static Comparator<Student> getCompByName(){
return new Comparator<Student>(){
@Override
public int compare(Student std1, Student std2)
{return std1.getName().compareTo(std2.getName());}
};
}
/**
*
* @return
*/
public static Comparator<Student> getCompByDate(){
return new Comparator<Student>(){
@Override
public int compare(Student std1, Student std2)
{return std1.getEnrolledDate().compareTo(std2.getEnrolledDate());}
};
}
public static void main(String args[]){
Student std1 = new Student("Alice",new Date(1999,1,1));
Student std2 = new Student("Alex",new Date(1998,2,1));
Student std3 = new Student("John",new Date(1999,1,3));
Student std4 = new Student("Brenna",new Date(1999,2,1));
List<Student> _students = new ArrayList<Student>();
_students.add(std1);
_students.add(std2);
_students.add(std3);
_students.add(std4);
Collections.sort(_students, getCompByName());
for(Student s: _students){
System.out.println(s.getName() + " " + s.getEnrolledDate());
}
}
}