【发布时间】:2021-11-23 06:52:39
【问题描述】:
为什么 Stream.of() 需要强制转换来获取内联 lambda 表达式或方法引用?
考虑一下:
Function<String,String> f = String::toUpperCase; // works without cast
Stream.of(f); // works without cast
//Stream.of(String::toUpperCase); // Error - target type must be functional interface
Stream.of((Function<String,String>) String::toUpperCase); //OK
对变量 f 的赋值不需要强制转换,但当用作 Stream.of 的内联参数时,则需要强制转换。 为什么?
【问题讨论】:
-
Stream.of 未传递方法或函数要使用的字符串。
-
你期望
Stream.of(String::toUpperCase)创建什么type流?是什么让你这么认为? -
@Pshemo 哦,现在我明白了
标签: java lambda java-stream