java - 对 NullPointerException、JAVA 8 进行多次检查的替代方法

标签 java java-8 null conditional-statements option-type

有没有更好的方法在 JAVA 8 中进行编码?

    if (info1 != null && info1.getId() != null && info1.getPartyNumber()!= null) {
        billing.setSenderId(info1.getId());
        billing.setSenderNumber(info1.getPartyNumber());
    }
    if (info2 != null && info2.getId() != null && info2.getPartyNumber()!= null) {
        billing.setReceiverId(info2.getId());
        billing.setSellerNumber(info2.getPartyNumber());            
    }

    ..
    ..

提前致谢。 注意:我研究了 Optional.ofNullable() 但不确定这是否真的可以帮助进行多次检查?

最佳答案

这是我能想到的最好的办法。我会让你决定它是否更干净:

Optional<Info> oInfo1 = Optional.ofNullable(info1);
oInfo1.map(Info::getId).ifPresent(billing::setSenderId);
oInfo1.map(Info::getPartyNumber).ifPresent(billing::setSenderNumber);

Optional<Info> oInfo2 = Optional.ofNullable(info2);
oInfo2.map(Info::getId).ifPresent(billing::setReceiverId);
oInfo2.map(Info::getPartyNumber).ifPresent(billing::setSellerNumber);

请注意,这与原始版本略有不同,因为即使另一个字段为空,它也可能会设置一个字段。

关于java - 对 NullPointerException、JAVA 8 进行多次检查的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52122679/

相关文章:

java - 获取调用页面的URL Java

java - 将 mp3 文件输入流转换为字节输出流的性能问题

Java:从显示 ArrayList 的 Stringbuffer 中删除括号和逗号

java - 使用 Java 比较两个文件并单独存储有用信息

java - 想从java中的char数组创建一个字符流

c - 当接收到 null-but-not-0 和 0-but-not-null 指针时,如何测试代码的行为?

lambda - 为什么 map 内的 lambda 没有运行?

c# - 检查 OpenFileDialog.OpenFile 是否为空

c - 在简单的 GTK+ 应用程序中启用优化时出现段错误?