×

Optional简略用法

我的笔记 我的笔记 发表于2018-07-23 21:26:06 浏览2988 评论0

抢沙发发表评论

  Java在8的版本,新增了Optional和lambda表达式,使得日常开发中对于NullPointException的判断变的优雅。

现在来个例子看看在Optional之前对空的判断。

@Test
public void testOpt() {
        User u = new User();
        u.setName("hy");
        if (u != null && u.getName() != null) {
            System.out.println(u.getName());
        }
        
   }
public class User {
    private String name;
    
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

如果层级更深的话,那就更难看一些...

看看通过Optional改造后的版本

@Test(expected = MyException.class)
    public void testOpt() {
        User s = new User();
        s = null;
        // s.setName(null);
        Optional<User> opt = Optional.ofNullable(s);
        String name = opt.map(user -> user.getName()).orElseThrow(()-> new MyException("异常"));
        //Assert.assertEquals("hy", name);
        System.out.println(name);
    }
public class MyException extends RuntimeException {
    MyException() {

    }

    MyException(String mgs) {
        super(mgs);
    }
}

没有了恼人的if判空,变的优雅很多,其实lambda表达式使之前很多很繁琐的表达变的优雅,以后也会把更多的优雅用法贴到这里备忘。

 

我的笔记博客版权我的笔记博客版权