按嵌套对象的一个​​属性对对象数组进行排序

use*_*928 6 java arrays

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

List<Sell> collect = sells.stream()
        .sorted(Comparator.comparing(Sell::getClient.name, String::compareToIgnoreCase))
        .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

这不是编译,没有人知道该怎么办?

谢谢.

Man*_*dis 6

这是导致错误的代码部分

Sell::getClient.name

您可以创建对特定类型的任意对象的(静态或非静态)方法的引用。getClient对任何Sell类型对象的方法的引用如下所示:

Sell::getClient

但是方法引用不是对象,也没有成员可以访问。使用此代码,您尝试访问引用的成员变量(并且不能)

Sell::getClient.name

此外,方法引用不是类,因此您无法从它们获取另一个方法引用。如果你尝试过,你就不能做这样的事情:

Sell::getClient::getName

@mlk 为您的特定情况提供了正确的语法:

  1. x -> x.getClient().name
  2. Sell::getClientName (不必是静态方法)