0
点赞
收藏
分享

微信扫一扫

【Java笔记】Optional类的使用

为了解决空指针异常,Google 公司著名的 Guava 项目引入了 Optional 类,来检查空值

Optional <T> 类是一个容器类,它可以保存类型 T 的值,代表这个值存在,或仅仅保存 null,表示这个值不存在

目录

Optional类的方法

代码举例


Optional类的方法

Optional.empty()创建一个空的 Optional 实例
Optional.of(T t)创建一个 Optional 实例,当 t为null时抛出异常
Optional.ofNullable(T t)创建一个 Optional 实例,但当 t为null时不会抛出异常,而是返回一个空的实例
get()获取optional实例中的对象,当optional 容器为空时报错
isPresent()判断optional是否为空,如果空则返回false,否则返回true
ifPresent(Consumer c)如果optional不为空,则将optional中的对象传给Comsumer函数
orElse(T other)如果optional不为空,则返回optional中的对象;如果为null,则返回 other 这个默认值
orElseGet(Supplier<T> other)如果optional不为空,则返回optional中的对象;如果为null,则使用Supplier函数生成默认值other
orElseThrow(Supplier<X> exception)如果optional不为空,则返回optional中的对象;如果为null,则抛出Supplier函数生成的异常

代码举例

import org.junit.Test;
import java.util.Optional;

public class OptionalTest {
    @Test
    public void test(){
        Girl girl = new Girl();
        girl = null;
        Optional<Girl> optionalGirl = Optional.ofNullable(girl);
        Girl girl1 = optionalGirl.orElse(new Girl("小红"));
        //如果为 Girl 为 null,则返回Optional.empty,不为 null 则返回小红
        System.out.println(optionalGirl);
    }
}
class Girl{
    private String name;

    public Girl(){}

    public Girl(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Girl{" +
                "name='" + name + '\'' +
                '}';
    }
}
class Boy{
    private Girl girl;

    public Boy(Girl girl) {
        this.girl = girl;
    }

    public Girl getGirl() {
        return girl;
    }

    public void setGirl(Girl girl) {
        this.girl = girl;
    }

    @Override
    public String toString() {
        return "Boy{" +
                "girl=" + girl +
                '}';
    }
}

>>> Optional.empty
举报

相关推荐

0 条评论