java中没有见过的用法
interface & interface
在阅读Comparator
源码时,无意间发现了如下这种用法:
public static <T, U extends Comparable<? super U>> Comparator<T> comparing(
Function<? super T, ? extends U> keyExtractor) {
Objects.requireNonNull(keyExtractor);
return (Comparator<T> & Serializable)
(c1, c2) -> keyExtractor.apply(c1).compareTo(keyExtractor.apply(c2));
}
在这个方法中有 (Comparator<T> & Serializable)
这样的用法。经过调研,发现是类型转换的意思,返回的结果被转换成实现Comparator
和Serializable
两个接口的实例。 java中做强制转换时,对于类,只能指定一个;对于接口,能够指定无数个。
local_offer #java