首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将Java供应商绑定到对象的实例?

如何将Java供应商绑定到对象的实例?
EN

Stack Overflow用户
提问于 2018-10-07 03:13:05
回答 3查看 2.1K关注 0票数 12

如何将Java Supplier绑定到现有的对象实例?例如,如果我想用这个标头编写自己的compareTo()方法:

代码语言:javascript
复制
public static int myCompareTo(Object o1, Object o2, Supplier<Comparable> supplier) {...}

我希望能够这样称呼它:

代码语言:javascript
复制
myCompareTo("Hello", "Hello2", String::length);

其中String (大写字母)是一个类,没有对象。那么如何将实例o1绑定到供应商呢?

EN

回答 3

Stack Overflow用户

发布于 2018-10-07 03:53:14

以下是您正在搜索的内容(我相信):

代码语言:javascript
复制
public static <T, U extends Comparable<U>> int compare(T o1, T o2, Function<T, U> mapper) {
    return mapper.apply(o1).compareTo(mapper.apply(o2));
}

你可以这样叫它:

代码语言:javascript
复制
compare("str1", "str2", String::length); // 0
票数 4
EN

Stack Overflow用户

发布于 2018-10-07 06:55:45

实际上,更正确的定义方法应该是:

代码语言:javascript
复制
private static <T, U extends Comparable<? super U>> int myCompareTo(T left, T right, Function<T, U> fu) {
    return Comparator.comparing(fu).compare(left, right);
}
票数 3
EN

Stack Overflow用户

发布于 2018-10-07 03:22:49

您可以使用

代码语言:javascript
复制
Comparator.comparing(String::length);

获取一个比较器实例,您可以将该实例传递给该方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52682507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档