java - 从对象中获取非空值
问题描述
假设我有一个Foo
有 X 和 X 有 Y 的类。我只想从 X 中获取 Y,除非不是foo.getX()
这样,如下所示:null
null
Y y = getNonNullValue(foo.getX(), X::getY);
所以我不必这样做:
if (foo.getX() != null) {
Y y = foo.getX().getY();
}
我有以下代码
public <T, R> R getNonNullValue(final T t, final Supplier<R> supplier) {
return ; // What to write here?
}
commons-lang
或任何其他库是否具有类似的功能?
解决方案
我不明白你的问题,但我想你需要这个:
public <T, R> R getNonNullValue(final T t, final Function<T, R> mapper) {
return Optional.ofNullable(t)
.map(mapper)
.orElse(null);
}
或者按照 jesper 的建议:
public <T, R> R getNonNullValue(final T t, final Supplier<R> supplier) {
return t != null ? supplier.get() : null;
}
推荐阅读
- c# - 将 JSON 数组中的项目分配给 CheckedListBox C# 并引用它们
- c# - 简单的线程池管理器
- swift - ARMeshAnchor – SceneKit SCNView 渲染器 EXC_BAD_ACCESS
- javascript - d3.select() 不返回任何东西
- microservices - 微服务与 Lambda 与无服务器函数的差异
- xcode - 反应原生 IOS 构建问题
- javascript - 如何将我的对象布尔值更新为 true 和 false?
- python - 我如何编写一个函数来查找数字列表的分数排名?
- c# - 升级到 ASP.NET 4.7.1 以进行连接字符串依赖注入
- java - for循环内部while的时间复杂度?