所以我正在阅读泛型和函数式接口。显示了两种方法 - 使用 Lambda,使用方法引用。使用了以下示例:
Predicate<String> ref = String::isEmpty;
Run Code Online (Sandbox Code Playgroud)
Java 使用在运行时提供的参数作为调用 isEmpty 的实例。这是允许的,因为 isEmpty() 是 String 类中的一个实例方法并且不带任何参数。
我的问题是,当我使用以下代码行时,为什么会显示编译错误:
Supplier<Integer> ref2 = Random::nextInt;
Run Code Online (Sandbox Code Playgroud)
毕竟 nextInt() 是 Random 类中的实例方法,就像 String 类中的 isEmpty() 一样,它也不带参数。