從JDK8的Comparator.java:爲什麼Java 8的Comparator.comparing()將返回值轉換爲Serializable?
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));
}
通知return語句前面加上一個有趣的投:(Comparator<T> & Serializable)
我已經知道的和(我認爲)理解:
- 的
&
運營商在通用類型的限制(並可以推斷其目的在這裏), Serializable
接口。
然而,中投一起使用,莫名其妙給我。
什麼是& Serializable
目的如果返回類型並不需要它?
我不明白意圖。
後續欺騙/關閉請求:這個問題How to serialize a lambda?不回答問題。我的問題特別指出返回類型沒有提及Serializable
,因此我的困惑的來源。
可能重複的[如何序列化lambda?](http://stackoverflow.com/questions/22807912/how-to-serialize-a-lambda) – shmosel
返回類型不是問題。將其轉換爲'Serializable' *使其可序列化*。如果他們選擇這個方法,允許調用者序列化結果。 – shmosel