【发布时间】:2016-07-14 18:39:45
【问题描述】:
为什么不编译?
Stream.generate(Integer::new(1)).limit(10);
它给出了错误
令牌“新”的语法错误,此令牌后应为 AssignmentOperator
当然,我可以把这个表达式改写成
Stream.generate(() -> new Integer(1)).limit(10);
但我想知道第一个语句失败的原因......
【问题讨论】:
-
你不能为方法引用提供额外的参数。因此,您必须改用 lambda 表达式。但无论如何,使用
Integer的构造函数是没有意义的。你可以使用Stream.generate( () -> 1)... -
因为
Integer::new(1)不是有效的方法/构造函数引用。 JLS
标签: java java-8 method-reference