您当前的位置: 首页 >  容器

Dongguo丶

暂无认证

  • 2浏览

    0关注

    472博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Optional容器类

Dongguo丶 发布时间:2018-08-05 22:05:45 ,浏览量:2

 

Optional类

Optional类(java. util. Optional)是一个容器类,代表一个值存在或不存在,原来用null表示一个值不存在,现在Optional可以更好的表达这个概念。并且可以避免空指针异常。

常用方法:

Optional.of (T t) :创建一个Optional实例

Optional. empty() :创建一个空的Optional实例

Optional. ofNullable(T t):若t不为nul1,创建Optional实例,否则创建空实例

isPresent () :判断是否包含值

orElse(T t) : 如果调用对象包含值,返回该值,否则返回t

orElseGet (Supplier s) :如果调用对象包含值,返回该值,否则返回s获取的值

map (Function f):如果有值对其处理,并返回处理后的0ptional,否则返回Optional. empty()

flatMap(Function mapper) :与map类似,要求返回值必须是Optional

Optional.of (T t) :创建一个Optional实例

@Test
public void test1() {
    Optional optional = Optional.of(new Employee());
    Employee employee = optional.get();
    System.out.println(employee);//Employee{name='null', age=0, salary=0, status='null'}
}

Optional. empty() :创建一个空的Optional实例

 

@Test
public void test2() {
    Optional optional = Optional.empty();//创建一个空的Optional实例
    Employee employee = optional.get();//java.util.NoSuchElementException: No value present
    System.out.println(employee);
}

 

Optional. ofNullable(T t):若t不为nul1,创建Optional实例,否则创建空实例

@Test
public void test3() {
    Optional optional = Optional.ofNullable(new Employee());
    Employee employee = optional.get();
    System.out.println(employee);//Employee{name='null', age=0, salary=0, status='null'}

    Optional optional2 = Optional.ofNullable(null);
    Employee employee2 = optional2.get();//java.util.NoSuchElementException: No value present
    System.out.println(employee2);
}
public static  Optional ofNullable(T value) {
    return value == null ? empty() : of(value);
}

isPresent () :判断是否包含值orElse(T t) : 如果调用对象包含值,返回该值,否则返回t

@Test
public void test3() {
    Optional optional = Optional.ofNullable(new Employee());
    if (optional.isPresent()) {
        Employee employee = optional.get();
        System.out.println(employee);//Employee{name='null', age=0, salary=0, status='null'}
    }
    Optional optional2 = Optional.ofNullable(null);
    if (optional2.isPresent()) {//没有值跳过
        Employee employee2 = optional2.get();
        System.out.println(employee2);
    }
}

 

orElse(T t) : 如果调用对象包含值,返回该值,否则返回t

@Test
public void test3() {
    Optional optional = Optional.ofNullable(new Employee());
    Employee employee = optional.orElse(new Employee("张三", 18, 3000, Status.BUSY));
    System.out.println(employee);//Employee{name='null', age=0, salary=0, status='null'}

    Optional optional2 = Optional.ofNullable(null);
    Employee employee2 = optional2.orElse(new Employee("张三", 18, 3000, Status.BUSY));
    System.out.println(employee2);//Employee{name='张三', age=18, salary=3000, status='BUSY'}
}

 

orElseGet (Supplier s) :如果调用对象包含值,返回该值,否则返回s获取的值

@Test
public void test3() {
    Optional optional = Optional.ofNullable(new Employee());
    Employee employee = optional.orElseGet(()->new Employee("张三", 18, 3000, Status.BUSY));
    System.out.println(employee);//Employee{name='null', age=0, salary=0, status='null'}

    Optional optional2 = Optional.ofNullable(null);
    Employee employee2 = optional2.orElseGet(()->new Employee("张三", 18, 3000, Status.BUSY));
    System.out.println(employee2);//Employee{name='张三', age=18, salary=3000, status='BUSY'}
}

map (Function f):如果有值对其处理,并返回处理后的0ptional,否则返回Optional. empty()

@Test
public void test4() {
    Optional optional = Optional.ofNullable(new Employee("张三", 18, 3000, Status.BUSY));
    Optional optionalS = optional.map((x) -> x.getName());
   System.out.println(optionalS .get());//张三
}

flatMap(Function mapper) :与map类似,要求返回值必须是Optional

@Test
public void test4() {
    Optional optional = Optional.ofNullable(new Employee("张三", 18, 3000, Status.BUSY));
    Optional optional1 = optional.flatMap((x) -> optional.of(x.getName()));
    System.out.println(optional1.get());//张三
}

关注
打赏
1638062488
查看更多评论
立即登录/注册

微信扫码登录

0.0402s