我需要通过对象属性之一的一个属性来比较对象数组。
我在做 :

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(不必是静态方法)
  • 10-07 22:27