我需要根据 name
对 Student
对象进行排序。请注意,Student
类中没有 compareTo()
的实现,只有简单的 getter 和 setter,并且该类本身是 school.jar
的一部分> 这是我在我的教育门户项目中使用的。如何访问这些字段,我可以引入相同的基类,但将 Student 类标记为 final
。
这个用例在技术上是否可行?如果是这样,我该如何实现?
最佳答案
你不需要修改Student
类——你可以引入你自己的Comparator
:
public class StudentNameComparator implements Comparator<Student> {
@Override
int compare(Student s1, Student s2) {
return s1.getName().compareTo(s2.getName());
}
}
然后使用它:
Collections.sort(listOfStudents, new StudentNameComparator());
编辑:
强制性注释:Java 8(或更高版本)将允许对此进行一些语法糖(例如 Comparator.comparing(Student::getName)
),但要求是使用 Java 7。
关于java - 如何在 Java 7 中对 .class 文件中的属性实现自定义排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65304618/