首页 > 解决方案 > 在 Java 8 中为什么我们不能使用方法引用将 Math.random() 转换为 Math::random

问题描述

这有效

Supplier<Double> random1 = () -> Math.random();

为什么这不起作用:

Supplier<Double> random2 = () -> Math::random

标签: javalambdajava-8method-reference

解决方案


仅使用方法参考将起作用,例如:

Supplier<Double> random2 = Math::random

因为它已经代表一个Supplier<Double>.

另一方面,您使用的当前符号将表示Supplier如下Supplier<Double>

Supplier<Supplier<Double>> random2 = () -> Math::random;

推荐阅读