public static class CompareClass {
public static int CompareBetweenStudents(Student student, Student othStudent) {
return student.getNume().compareTo(othStudent.getNume());
}
}
public List<Student> filterStudentsByLetter(String letter){
Predicate<Student> predicate = x->x.getNume().indexOf(letter) == 0;
Iterable<Student> list = getAllStudenti();
Object[] objects = genericFilter(list, predicate, CompareClass::CompareBetweenStudents).toArray();
return null;
}
public <E> List<E> genericFilter(List<E> list, Predicate<E> predicate, Comparator<E> comp){
return list.stream().filter(predicate).sorted(comp).collect(Collectors.toList());
}
我正在尝试创建一个可比较的类以在过滤器中使用,但我不断将 CompareClass::CompareBetweenStudents 视为“无法解析 methodCompareBetweenStudents”。怎么解决呢?
最佳答案
您不需要为此实现一个类(比较),您可以简单地执行以下操作:
genericFilter(list, predicate, Comparator.comparing(x -> x.getName()))
还有另一个问题:您将列表声明为 Iterable<Student> list
但将其作为 List<E> list
传递。这不起作用,请修复 getAllStudenti()
返回List<Student>
关于java - Java使用内部类的方法引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47242667/