У меня есть абстрактный метод в абстрактном классе, студент. Подкласс, JUPASStudent переопределяет его. Сейчас я пытаюсь отсортировать ArrayList типа Student. Требуется вызвать этот абстрактный метод, но я не могу этого сделать.
Я пишу здесь свой частичный код.
Суперкласс:
abstract class Student {
protected String name;
public Student (String name) {
this.name = name;
}
public String getName() {
return name;
}
abstract double getResult(); //abstract method
}
Подкласс:
public class JUPASStudent extends Student {
private double dseResult;
public JUPASStudent(String n, double d) {
super (n);
this.dseResult = d;
}
public double getResult() {
return dseResult; //abstract method is overridden here
}
public String getName() {
return super.name;
}
public void setResult(double dseResult) {
this.dseResult = dseResult;
}
public void setName(String name) {
super.name = name;
}
}
Теперь я пишу функцию сортировки всоздать ArrayList (класс ученика)
public ArrayList <Student> sort(ArrayList<Student> sList){
sList.sort(Comparator.comparingInt(Student::getResult));
return sList;
}
Ввод:
A 9
B 5
C 8
Ожидаемый результат:
B 5
C 8
A 9
Ошибка
-The method comparingInt(ToIntFunction<? super T>) in the type Comparator is not applicable for the arguments (Student::getResult)
-The type Student does not define getResult(T) that is applicable here