JDK8新特性之Optional类

Optional是一个没有子类的工具类,Optional是一个可以为null的容器对象。它的作用主要是为了解决避免null检查,防止NullPointerException.

1、Optional类的创建方式

Optional.of(T t):创建一个Optional实例
Optional.empty():创建一个空的Optional实例
Optional.ofNullable(T t):若t不为null,创建Optional实例,否则创建空实例

 2、Optional类的常用方法

isPresent():判断是否包含值,包含值返回true,不包含值返回false
get():如果Optional有值则将其返回,否则抛出NOSuchElementException
orElse(T t):如果调用对象包含值,返回该值,否则返回参数t
orElseGet(supplier s):如果调用对象包含值,返回该值,否则返回s获取的值
map(Function f):如果有值对其处理,并返回处理后的Optional,否则返回Optional.empty()

3、使用Optional类操作

//以前对null的处理方式
@Test
public void test(){
    String userName =  "凤姐";
    if(userName != null){
        System.out.println("用户名为 : "+userName);
    }else {
        System.out.println("用户名不存在");
    }
}

@Test
public void testOption(){
    Optional<String> op = Optional.of("白兰");
    boolean present = op.isPresent();
    System.out.println("present : "+present);//true

    Optional<Object> empty = Optional.empty();
    System.out.println("empty : "+empty.isPresent());//false
    System.out.println("有值返回 : "+op.get());
    //System.out.println("无值抛异常 :"+empty.get());
}

@Test
public void testOp(){
    Optional<String> optionals = Optional.of("凤姐");
    Optional<Object> empty = Optional.empty();
    //存在做的什么
   // optionals.ifPresent(s->System.out.println("用户名为 : "+s));
    //存在做的什么,不存在做点什么  没有ifPresentOrElse方法
    //optionals.ifPresentOrElse(s->System.out.println("用户名为 : "+s),()->System.out.println("用户名不存在"));
    System.out.println("用户名为 : "+optionals.orElse("null"));
    System.out.println("用户名为 :"+empty.orElse("null"));
    Optional<String> userNameO = Optional.of("凤姐");
    // Optional<String> userNameO = Optional.empty();
    // 存在做的什么
    // userNameO.ifPresent(s -> System.out.println("用户名为" + s));
    // 存在做的什么,不存在做点什么
    String s = userNameO.orElseGet(() -> "未知姓名 :");
    System.out.println("s : "+s);
    System.out.println(" :"+empty.orElseGet(()->"未知姓名"));
}

//对对象的姓名做字母转大写,否则返回null
@Test
public void testMap(){
    Person person = new Person(null,54,"男");
    Optional<Person> optionalPerson = Optional.of(person);
    String aNull = optionalPerson.map(p -> p.getName()).map(name -> name.toUpperCase()).orElse("空的值");
    System.out.println("姓名的值为 : "+aNull);
}

路漫漫其修远兮,吾将上下而求索,希望此篇文章对大家有所帮助......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值