Java8简明学习之Optional
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表达式使之前很多很繁琐的表达变的优雅,以后也会把更多的优雅用法贴到这里备忘。
作者: 重名 出处: http://www.cnblogs.com/daily-note