【问题标题】:Comparator: Method references not supported at this language level?比较器:此语言级别不支持方法引用?
【发布时间】:2016-08-19 12:56:37
【问题描述】:

我为 Java 8 项目编写了以下代码行:

Comparator<Person> oldestPerson= Comparator.comparing(Person::getOldestBirthday);

这是一个简单的比较器,但是我试图在一个只使用 Java 7 的项目中使用此代码,因此出现此错误:

"Method references are not supported at this language level"

我知道我收到错误是因为我没有使用 Java 8。有没有一种简单的方法可以重写逻辑而无需使用方法引用?

【问题讨论】:

  • 取决于您所说的“简单”。它有很多样板,这正是开发它的原因。
  • 你能举个例子来说明它是怎么做的吗?还是链接?

标签: java java-8 java-7 comparator method-reference


【解决方案1】:
Comparator<Person> comparator = new Comparator<Person>() {
    @Override
    public int compare(Person p1, Person p2) {
        return p1.getOldestBirthday().compareTo(p2.getOldestBirthday());
    }
};

这可能是 Java 7 中最简单的方法

【讨论】:

  • ok 那么有什么需要比较多个人的呢?而不仅仅是 2 个(即 p1 和 p2)?
  • 比较器基本上定义了相同类型的对象应该如何排序。如果您想将其应用于一组人,例如。 List personList,然后您可以使用比较器对它们进行排序:Collections.sort(personList,comparator)。
  • 我的意思是有没有办法对多个子句进行排序,即类似于 Java 8 中的 .thenComparing() 方法?
猜你喜欢
  • 2016-05-17
  • 2017-10-15
  • 2014-08-09
  • 2015-05-26
  • 1970-01-01
  • 2016-05-05
  • 2016-12-22
  • 2016-02-29
相关资源
最近更新 更多