Java 8 可选获取(如果存在)

标签 java java-8 option-type

<分区>

我有这样一个类结构:

public class Foo {
    private FooB fooB;

    public Optional<FooB> getFooB() {
        return Optional.ofNullable(fooB);
    }
}

public class FooB {
    private String a;
    private String b;

    public String getA() {
        return a;
    }

    public String getB() {
        return b;
    }
}

我想做的是这样的:

main() {
    //initialize a Foo object called foo
    String a = foo.getFooB().ifPresent(FooB::getA);
}

基本上,如果 foo 对象返回 FooB,则从 FooB 中获取字段 String a 并将其存储在局部变量 String a 中.我怎样才能在一行中优雅地做到这一点?

最佳答案

作为getFooB()返回 Optional<FooB> 的实例, 得到对应的值getA() , 你需要使用 map 方法如下:

Optional<String> a = foo.getFooB().map(FooB::getA);

关于Java 8 可选获取(如果存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38774155/

相关文章:

java - 在android中解析json数组中的JSON数组

java - 以编程方式添加时无法识别带重音的 GWT 字符

java - 查询 IBM Domino 数据存储的 JDBC 是什么?

用于 int 范围的 Java 8 IntStream?

android - 如何在 Android 设备上安装 java 运行时?

java - Java 二叉树实现中链接对象的异常

java - 从 Java 7 到 Java 8 的 Jackson Object Mapper 版本化问题

java - 用户通过 orElseThrow 方法定义的异常

具有可选返回类型的 JavaBean 自省(introspection)

swift - 为什么要避免强制展开