如何将Java Supplier
绑定到现有的对象实例?例如,如果我想用这个标头编写自己的compareTo()
方法:
public static int myCompareTo(Object o1, Object o2, Supplier<Comparable> supplier) {...}
我希望能够这样称呼它:
myCompareTo("Hello", "Hello2", String::length);
其中String
(大写字母)是一个类,没有对象。那么如何将实例o1
绑定到供应商呢?
发布于 2018-10-07 03:53:14
以下是您正在搜索的内容(我相信):
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));
}
你可以这样叫它:
compare("str1", "str2", String::length); // 0
发布于 2018-10-07 06:55:45
实际上,更正确的定义方法应该是:
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);
}
发布于 2018-10-07 03:22:49
您可以使用
Comparator.comparing(String::length);
获取一个比较器实例,您可以将该实例传递给该方法。
https://stackoverflow.com/questions/52682507
复制相似问题