使用方法引用而不是多参数 lambda
我对“引用特定类型的任意对象的实例方法”背后的概念感到困惑。Oracle 文档有一个关于此的示例:
String[] stringArray = { "Barbara", "James", "Mary", "John", "Patricia", "Robert", "Michael", "Linda" };
Arrays.sort(stringArray, String::compareToIgnoreCase);
我见过的这种方法引用的大多数例子都是这样的:如果lambda是这样的:那么你可以像.文档中的示例说:x -> x.func()
ClassOfX::func
方法引用 String::compareToIgnoreCase 的等效 lambda 表达式将具有正式参数列表(字符串 a、字符串 b),其中 a 和 b 是用于更好地描述此示例的任意名称。方法引用将调用方法 a.compareToIgnoreCase(b)。
问题是:对于任何两个参数,lambda就像方法一样,必须是第一个参数的实例方法,lambda的第二个参数将作为参数传递给该方法?如果我们有多个参数 lambda,那么方法必须是 lambda 的第一个参数的实例方法,lambda 的其他参数将按照在 lambda 中出现的顺序传递给 lambda?我的意思是,与其说我们可以写(a, b) -> a.func(b)
func
func
func
(a, b, c) -> a.func(b, c)
ClassOfA::func
对不起我的英语。我希望我把问题说清楚了。