gpt4 book ai didi

java - 如何在不调用 call 方法的情况下调用仿函数对象的函数

转载 作者:行者123 更新时间:2023-11-30 02:35:13 25 4
gpt4 key购买 nike

我有一个仿函数对象:

private static Func1<MyEvent, Observable<Data>> getDataOnEvent = new Func1<MyEvent, Observable<Data>>() {
@Override
public Observable<Data> call(MyEvent event) {
return ApiFactory.get().getData()
}
};

为了调用它,我需要这样做:

result = getDataOnEvent.call(someEvent)

是否可以这样做:

result = getDataOnEvent(someEvent)

就像是用 Python 和 Javascript 完成的吗?也许是新版本的 java 或者像 Lombok 这样的库?

最佳答案

只需使用,

private static Observable<Data> getDataOnEvent(MyEvent event) {
return ApiFactory.get().getData()
}

您可以调用 result = getDataOnEvent(someEvent);每当您需要它时。正如您所看到的,以这种方式编写,将比五个字母 .call 节省更多的锅炉代码。在调用端。

如果Func1是一个函数式接口(interface),可以使用ContainingClass::getDataOnEvent无论何处 Func1<MyEvent, Observable<Data>>是期待。您还可以将其存储到 static变量,如果您喜欢使用简单标识符 getDataOnEvent作为函数:

private static Func1<MyEvent, Observable<Data>> getDataOnEvent
= ContainingClass::getDataOnEvent;

然后你可以使用getDataOnEvent(event)调用它或 getDataOnEvent将其称为 Func1每当您需要时实例。

如果Func1不是函数式接口(interface),那么您无法以这种紧凑的形式创建函数,但另一方面,在这种情况下,要求支持调用任意方法而不显式命名它也是不合理的.

关于java - 如何在不调用 call 方法的情况下调用仿函数对象的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43281752/

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