这个问题在这里已经有答案了:
Java8:方法引用绑定接收器和未绑定接收器之间的差异(6个答案)
在Java8中,“特定类型的任意对象”是什么意思(5个答案)
Java8中示例方法引用类型之间有什么区别(3个答案)
java8中不同参数方法的引用(1个答案)
示例方法参考和lambda参数(2个答案)
上个月关门了。
我在很多地方看过这段代码,但我不明白如何在“stream.map(-)”函数中将string.touppercase作为方法引用传递。?参见以下代码: List myList = Arrays.asList("india", "australia", "england"); myList.stream().map(String :: toUpperCase).sorted().forEach(System.out :: println);
我的理解是stream.map方法采用java.util.function<t,u>接口对象,其中包含u apply(t)方法。这意味着,任何接受一个参数并返回一个值的方法都是方法引用的“候选者”,可以作为方法引用在stream.map(..)方法中传递。但在上述代码中,string.touppercase方法不接受任何参数,只返回字符串值。这意味着touppercase的签名与“u apply(t)”函数不匹配。
那么上面的代码是如何正常工作的呢?
1条答案
按热度按时间o2g1uqev1#
方法引用采用treats“this”(即
toUpperCase
作为第一个参数。