List<Animal> animals = this.service.findAll();
animals = animals.stream().sorted(Comparator.comparing(Animal::getName)).collect(Collectors.toList());
//working
而
List<Animal> animals = this.service.findAll();
animals = animals.stream().sorted(Comparator.comparing(Animal.getName()).collect(Collectors.toList());
//Not working..
任何人都可以告诉我为什么我不能在没有方法参考的情况下使用比较器比较?
答案 0 :(得分:6)
接受从类型T中提取可比较排序键 的函数, 并返回一个按该排序键进行比较的比较器。
Animal::getName
给出方法参考,而Animal.getName()
给你一个String
(可能)。
参考:
答案 1 :(得分:2)
除非getName()
是静态方法,否则可能无法编译。
如果您不想使用方法引用(它不是合成糖),请使用lambda,这也应该有用。
animals.stream().sorted(Comparator.comparing(a -> a.getName()).collect(Collectors.toList());