Baru-baru ini saya membaca kod sumber Java yang berkaitan dengan ungkapan lambda, dan menemui banyak kaedah penulisan yang serupa dalam kaedah statik Comparator
java.util.Comparator
...
public static <T> Comparator<T> comparingInt(ToIntFunction<? super T> keyExtractor) {
Objects.requireNonNull(keyExtractor);
return (Comparator<T> & Serializable)
(c1, c2) -> Integer.compare(keyExtractor.applyAsInt(c1), keyExtractor.applyAsInt(c2));
}
Antaranya return (Comparator<T> & Serializable)
应该是表示类型强转,但是这里为什么不直接转换成Comparator<T>
, tapi guna logik dan simbol?
Ini bermakna penukaran paksa kepada
Comparator<T>
和Serializable
Anda boleh membaca penjelasan ini