gpt4 book ai didi

java - 有没有一种优雅的方法可以使用 Optional 初始化和返回可空字段的值

转载 作者:搜寻专家 更新时间:2023-11-01 01:31:46 25 4
gpt4 key购买 nike

我有一段代码返回一个字段的值,但也初始化它:

public Observable<Integer> asObservable() {
if (subject == null) {
subject = BehaviorSubject.createDefault(0);
}
return subject;
}

我正在尝试使用 Optional 类来避免 if 语句:

public Observable<Integer> asObservableWithOptional() {
Optional.ofNullable(subject)
.executeIfAbsent(() -> BehaviorSubject.createDefault(0));
return subject;
}

但是我仍然对这段代码不满意。有没有办法把这个方法变成一个只有一个声明的方法?类似于以下的内容将不起作用,因为 subject 在调用 ofNullable 工厂方法期间尚未初始化:

    return Optional.ofNullable(subject)
.executeIfAbsent(() -> BehaviorSubject.createDefault(0))
.get();

注意:我没有使用原始的 Java8 API,而是使用此 API 的 NNiMON 端口 https://github.com/aNNiMON/Lightweight-Stream-API .

最佳答案

怎么样

return subject = Optional.ofNullable(subject).orElseGet(() -> BehaviorSubject.createDefault(0));

当然,您可以使用三元条件运算符而不是创建一个 Optional 来立即丢弃它:

return subject != null ? subject : (subject = BehaviorSubject.createDefault(0));

关于java - 有没有一种优雅的方法可以使用 Optional 初始化和返回可空字段的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45417185/

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