首页 > 其他分享 >Optional使用

Optional使用

时间:2022-09-24 19:33:41浏览次数:49  
标签:map Outer nested 使用 outer foo Optional

 

import java.util.HashMap;
import java.util.Map;

// 最外层对象
public class Outer {
    Nested nested;
    Nested getNested() {
        return nested;
    }
}
// 第二层对象
class Nested {
    Inner inner;
    Inner getInner() {
        return inner;
    }
}
// 最底层对象
class Inner {
    String foo;
    String getFoo() {
        return foo;
    }
}

 

import java.util.Optional;
import org.junit.Test;

public class test {
    @Test
    public void test01(){
        Outer outer = new Outer();
        if (outer != null && outer.nested != null && outer.nested.inner != null) {
            System.out.println(outer.nested.inner.foo);
        }
    }
    @Test
    public void test02(){
        Optional.of(new Outer())
//            .map(Outer::getNested)
            //x可以表示传入的Outer对象
            .map(x -> {
                return x.getNested();
            })
            .map(Nested::getInner)
            .map(Inner::getFoo)
//            .ifPresent(System.out::println); // 如果不为空,最终输出 foo 的值
            .ifPresent(foo -> {
                System.out.println(foo);
            });

    }
//如果使用context对象中的属性是map对象(一般不建议),传入ele为map对象
//        Optional.ofNullable(context.getMap())
//                .map(ele -> ele.get("indexKey"))
//                .ifPresent(index -> {
//                    otherObject.setIndex(index);
//                });
}

语法参考:https://www.cnblogs.com/fx-blog/p/11747058.html

最佳实践参考:

https://zhuanlan.zhihu.com/p/128481434

https://xie.infoq.cn/article/e3d1f0f4f095397c44812a5be

标签:map,Outer,nested,使用,outer,foo,Optional
From: https://www.cnblogs.com/lukelhi/p/16726327.html

相关文章

  • qt的基本使用04——添加资源
    添加资源选择项目,右击addnew......
  • 前天为群友写的,使用面向对象的写法封装一个Modal Dialogue Box
    q群里的群友提出的问题“如何使用面向对象的语法封装一个Modal框”我们都知道,现在使用vue,都是用组件去封装的,怎么用对象去封装呢?我比较感兴趣,做了以下尝试下面直接......
  • 使用coverlet统计单元测试的代码覆盖率
    单元测试是个好东西,可以在一定程度上兜底虽然写单元测试这件事情非常麻烦但是好的单元测试可以显著提高代码质量,减少bug,避免无意中的修改导致其他模块出错写测试......
  • Django 使用VScode 创建工程
    一、VSCode创建Django工程VSCode官方:https://code.visualstudio.com1mysite(项目名),创建Django项目,可以和虚拟环境放在同一目录,也可以放在虚拟环境的文件夹里。......
  • markdown语法使用
    markdown语法使用标题系列​1.警号​2.快捷键​ctrl+数字(1~6)小标题系列*文本 无序标题 +文本 无序标题 数......
  • 支付宝沙箱的使用Node.js
    官网https://opendocs.alipay.com/common/02kkv7进入沙箱https://open.alipay.com/develop/sandbox/app下载支付宝开放平台开发助手生成密钥将密钥配置下载安......
  • ABP V7使用-1
    从官方下载模板StartupTemplates-CreateaDemo|AspNetBoilerplate里面前后端,我的时V7.X+NET6+VUE版本的模板 1 打开后端,更换数据库连接,运行可能会报下面这......
  • 存储数据 cookie localStorage和sessionStorage区别和使用
     三者主要是从三方面区分存储大小,生命周期和安全性1.cookie存储的数据小,在4KB左右生命周期,默认会话结束,可以设置有效期安全性,存储的数据在浏览器的隐私模式下......
  • vue 使用百度地图JavaScript API GL 组件
    <template><divclass="component"><el-cardclass="cardStyle"><!--ready,地图组件渲染完毕时触发,返回一个百度地图的核心类和地图实例--><baidu-map......
  • asyncio与不支持异步的模块结合使用
    1、使用前提将不支持异常的模板与asyncio结合使用【默认是使用线程池+事件循环】2、同时下载3张图片的示例1#-*-coding:utf-8-*-2"""3FileName:te......