我想实现 Comparable 接口,并使用它按 LocalDate 类型的字段比较(然后排序)数组元素。下面的代码给出错误 dateOfAdmission cannot be resolved or is not a field。我被建议阅读来自 oracle https://docs.oracle.com/javase/8/docs/api/java/time/chrono/ChronoLocalDate.html的帮助,但由于我的英语到目前为止包含麻烦和悲伤,我明白了一点。请向我解释错误是什么以及如何做,以便我可以通过 LocalDate 类型的字段比较对象。提前致谢。 ps:克隆未完成
package myDefault;
import java.time.*;
import java.util.*;
/*В данной программе ставлю целью повторить пройденный материал по сравнению и клонированию объектов*/
public class Student implements Comparable<LocalDate>, Cloneable
{
private String firstName;
private String lastName;
LocalDate dateOfAdmission;
int scholarship;
Student(String firstName, String lastName, int day, int month, int year, int scholarship)
{
this.firstName = firstName;
this.lastName = lastName;
dateOfAdmission = LocalDate.of(day,month,year);
this.scholarship = scholarship;
}
public int compareTo(LocalDate other)
{
return Double.compare(dateOfAdmission, other.dateOfAdmission);
}
public void fillArray()
{
Student[] arrayOfStudents = new Student[3];
Student petya = new Student("Petya","Popov",10,6,2017,1500);
Student vasya = new Student("Vasya","Ovsyannikov",5,6,2017,1500);
Student gena = new Student("Gena","Lolov",12,6,2017,1500);
arrayOfStudents[0] = petya;
arrayOfStudents[1] = vasya;
arrayOfStudents[2] = gena;
}
public void createNewArray()
{
Student[] newArray = new Student[3];
}
public void outputArray(Student[] arrayOfStudents)
{
int counter;
for(counter = 0; counter < 3; counter++)
{
System.out.println(arrayOfStudents[counter]);
}
}
public Student clone() throws CloneNotSupportedException
{
Student cloned = (Student) super.clone();
return cloned;
}
}
你自己必须对两个字段进行比较,而不是借用别人的。当然,你可以借别人的,如果它适合你。在我看来,双胞胎无论如何都不适合你。尝试这样的事情:
但这是一个比较器
LocalDate,你需要一个学生来做这个这将是一个学生比较器,但它只会按日期进行比较!