Java在8的版本,新增了Optional和lambda表达式,使得平常开发中对于NullPointException的判断变的优雅。this
如今来个例子看看在Optional以前对空的判断。spa
@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; } }
若是层级更深的话,那就更难看一些...code
看看经过Optional改造后的版本blog
@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表达式使以前不少很繁琐的表达变的优雅,之后也会把更多的优雅用法贴到这里备忘。开发