我需要通过对象属性之一的一个属性来比较对象数组。
我在做 :
List<Sell> collect = sells.stream()
.sorted(Comparator.comparing(Sell::getClient.name, String::compareToIgnoreCase))
.collect(Collectors.toList());
它没有编译,有人知道该怎么做吗?
谢谢。
最佳答案
这是代码中导致错误的部分Sell::getClient.name
您可以创建对特定类型的任意对象的(静态或非静态)方法的引用。对getClient
类型的任何对象的Sell
方法的引用如下所示:Sell::getClient
但是方法引用不是对象,并且没有成员可以访问。使用此代码,您尝试访问引用的成员变量(并且不能)Sell::getClient.name
另外,方法引用不是类,因此您不能从它们中获取另一个方法引用。如果尝试过,则无法执行以下操作:Sell::getClient::getName
@mlk为您的特定情况提供了正确的语法:
x -> x.getClient().name
Sell::getClientName
(不必是静态方法)