gpt4 book ai didi

Java 8 - 如何声明对返回 void 的未绑定(bind)非静态方法的方法引用

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:53:20 25 4
gpt4 key购买 nike

这是一个简单的类来说明我的问题:

package com.example;

import java.util.function.*;

public class App {

public static void main(String[] args) {
App a1 = new App();

BiFunction<App, Long, Long> f1 = App::m1;
BiFunction<App, Long, Void> f2 = App::m2;

f1.apply(a1, 6L);
f2.apply(a1, 6L);
}

private long m1(long x) {
return x;
}

private void m2(long x) {
}
}

f1,引用App::m1,在f1的调用中绑定(bind)到a1 apply,工作得很好——编译器很满意,可以通过 f1.apply 进行调用。

f2,指的是 App::m2,不起作用。

我希望能够定义一个没有返回类型的未绑定(bind)非静态方法的方法引用,但我似乎无法让它工作。

最佳答案

BiFunction 表示接受两个参数并产生结果的函数。

I'd like to be able to define a method reference to an unbound non-static method with no return type

改用 BiConsumer,它表示接受两个输入参数并且不返回任何结果的操作。

BiConsumer<App, Long> f2 = App::m2;

然后改变这个:

f2.apply(a1, 6L);

为此:

f2.accept(a1, 6L);

关于Java 8 - 如何声明对返回 void 的未绑定(bind)非静态方法的方法引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46615763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com