加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 更简单的方法来反转静态方法(功能接口)内联创建的比较器

发布时间:2020-12-15 04:49:40 所属栏目:Java 来源:网络整理
导读:由于比较器 T是一个功能界面,我可以做到这一点 ComparatorInstant instantComparator = Instant::compareTo; 我现在可以改变它: ComparatorInstant instantComparatorReversed = instantComparator.reversed(); 我可以直接这样做,但是: ComparatorInstant
由于比较器< T>是一个功能界面,我可以做到这一点

Comparator<Instant> instantComparator = Instant::compareTo;

我现在可以改变它:

Comparator<Instant> instantComparatorReversed = instantComparator.reversed();

我可以直接这样做,但是:

Comparator<Instant> cannotDoThis = (Instant::compareTo).reversed();

这是有道理的,因为Instant :: compareTo毕竟只是一种方法,在那种情况下它就是这样.内联的唯一说法似乎是:

Comparator<Instant> instantComparatorReversedWithCast = ((Comparator<Instant>)Instant::compareTo).reversed();

还有

Comparator.<Instant>reverSEOrder()

并且如评论中所述

Comparator.<Instant>naturalOrder().reversed()

现在的问题是:是否有更短/更漂亮的方式来“内联”而不是那样?

解决方法

您可以编写一个接受Comparator作为参数的方法并将其反转:

public static <T> Comparator<T> reverse(Comparator<T> comparator) {
    return comparator.reversed();
}

您可能会在一个充满实用程序方法的类中执行此操作并静态导入该方法.

然后你可以这样做:

reverse(Instant:compareTo)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读