gpt4 book ai didi

java - 如何使用返回void的功能接口(interface)?

转载 作者:行者123 更新时间:2023-12-01 11:57:45 24 4
gpt4 key购买 nike

我有这个结构:

if (Objects.isNull(user.getMartialStatus())) {
user.setMartialStatus(MartialStatus.MARRIED);
}

我有很多,我想使用功能接口(interface)优化代码。
好的。我写这样的东西:
public static <T> void processIfNull(T o, Supplier<Void> s) {
if (Objects.isNull(o)) {
s.get();
}
}

然后,我等待这段代码可以工作:
processIfNull(user.getMartialStatus(), () -> user.setMartialStatus(MartialStatus.MARRIED));

但IDEA写道:

void is not compatible with Void



请告诉我应该怎么做。

最佳答案

正如错误所解释的 Void是一个不等同于 void 的类. Supplier<Void>预计返回 Void喜欢 Supplier<String>预计 String对象返回。

所以你的功能界面应该如下所示。
它有一个 void apply()() -> ... 的签名匹配

@FunctionalInterface
public interface ActionIfNotNull {
void apply();
}

但是,当您搜索内置功能接口(interface)时,您可以想出 Runnable正如乔恩斯基特建议的那样。

解决方案
public static <T> void processIfNull(T o, Runnable s) { // instead of you Runnable can use your own functional interface like ActionIfNotNull
if (Objects.isNull(o)) {
s.run();
}
}

关于java - 如何使用返回void的功能接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60334041/

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