-
获取对象深层的值
以前写法// 获取user中address对象的city值,要多次判空处理 public String getCity(User user) throws Exception { if (user != null) { if (user.getAddress() != null) { Address address = user.getAddress(); if (address.getCity() != null) { return address.getCity(); } } } throw new Exception("获取失败"); }
现在写法
// 直接用map取值 public String getCity(User user) throws Exception { return Optional.ofNullable(user) .map(u -> user.getAddress()) .map(a -> a.getCity()) .orElseThrow(() -> new Exception("获取失败")); }
-
对象判空处理
以前写法// if (user != null) { // do something }
现在写法
Optional.ofNullable(user) .ifPresent(u -> { // do something });
-
初始化一个名为“zhangsan”的user
以前写法public User getUser(User user) { if (user != null) { String name = user.getName(); if ("zhangsan".equals(name)) { return user; } else { user = new User(); user.setName("zhangsan"); return user; } } else { user = new User(); user.setName("zhangsan"); return user; } }
现在写法
public User getUser(User user) { return Optional.ofNullable(user) .filter(u -> "zhangsan".equals(u.getName())) .orElseGet(() -> { User user1 = new User(); user1.setName("zhangsan"); return user1; }); }