我對「引用特定類型的任意對象的實例方法」背後的概念感到困惑。甲骨文documentation大約有這樣一個例子:使用方法引用而不是多參數lambda
String[] stringArray = { "Barbara", "James", "Mary", "John", "Patricia", "Robert", "Michael", "Linda" };
Arrays.sort(stringArray, String::compareToIgnoreCase);
多數時候我已經看到了這種方法的參考例子是這樣的:如果拉姆達是這樣的:x -> x.func()
,那麼你可以把它寫像ClassOfX::func
。在文檔中的示例表示:
的方法參考 字符串等效lambda表達式::與compareToIgnoreCase將有正式的參數列表 (字符串一個,串B),其中,a和b是用於更好地任意名稱 描述了這個例子。方法引用將調用方法 a.compareToIgnoreCase(b)。
的問題是:對於任何兩個參數的lambda像(a, b) -> a.func(b)
的func
方法必須是實例的第一個參數和λ的第二個參數的方法將作爲一個參數傳遞給該方法通過?如果我們有多個參數lambda那麼func
方法必須是lambda的第一個參數的實例方法,lambda的其他參數將按照出現在lambda中的順序傳遞給func
?我的意思是代替(a, b, c) -> a.func(b, c)
我們可以寫ClassOfA::func
對不起我的英文。我希望我明確地解決了這個問題。
+1爲徹底。 –