import java.util.Optional; /** * @author: felix.chen * @Date: 2019/1/15 * @Description */ public class TestOptional { public static void main(String[] args) { testOptional(); } static void testOptional(){ //of ,为空则抛出异常 Optional optional1 = Optional.of("s"); System.out.println(optional1.get()); // Optional optional2 = Optional.of(null); //如果我们创建的Optional对象中有值存在则返回此值,如果没有值存在,则会抛出 //NoSuchElementException异常: Optional op1 = Optional.of("zhansan"); System.out.println(op1.get()); //orElseThrow //如果创建的Optional中有值存在,则返回此值,否则抛出一个由指定的Supplier接口生成的异常 Optional op = Optional.empty(); try { //空抛出异常 op.orElseThrow(()-> new RRException("页面找不到!",404)); } catch (Throwable throwable) { } //orElseGet //如果创建的Optional中有值存在,则返回此值,否则返回一个由Supplier接口生成的值 User user3 = new User("zhan1","sadsa@163.com"); Optional op2 = Optional.of(user3); User u = (User) op2.orElseGet(()->test()); System.out.println(u.getName()); // orElse // 为空输出默认值 Optional op3 = Optional.ofNullable(null); System.out.println(op3.orElse("哒哒哒").toString()); //ofNullable,不会报错 User user = null; Optional user1 = Optional.ofNullable(user); System.out.println(user1.toString()); //filter //如果创建的Optional中的值满足filter中的条件,则返回包含该值的Optional对象,否则返回一个空的Optional对象 Optional<String> op6 = Optional.of("ddddddd"); String aa = op6.filter(e -> e.length() > 5).orElse("你好!"); System.out.println(aa); //map //如果创建的Optional中的值存在,对该值执行提供的Function函数调用 Optional<String> stringOptional = Optional.of("ddddddd"); System.out.println(stringOptional.map(e -> e.toUpperCase()).orElse("失败")); stringOptional = Optional.empty(); System.out.println(stringOptional.map(e -> e.toUpperCase()).orElse("失败")); //ifPresent方法的参数是一个Consumer的实现类,Consumer类包含一个抽象方法,该抽象方法对传入的值进行处理,只处理没有返回值。 Optional<String> jjjj = Optional.ofNullable("ddddddd"); jjjj.ifPresent(e-> System.out.println("我被处理了。。。"+e)); } static User test(){ System.out.println("test"); return new User("zhan","sadsa@163.com"); } }
import lombok.Data; import org.springframework.beans.factory.annotation.Qualifier; /** * @author: felix.chen * @Date: 2018/12/20 * @Description */ @Qualifier @Data public class User { private String name; private String email; public User(){ } public User(String name,String email){ this.name = name; this.email = email; } }