java8下面代码只是判断了不为空执行一个逻辑,如何修改可以判断一个对象是否为空 为空执行一个逻辑 不为空执行另外一个逻辑?

Optional.ofNullable(user).ifPresent(u->

{ // TODO: do something }

);

if(Objects.isNull(Object)){//todo为空执行}else{//todo不为空执行}

ofNullable是返回当前数据或者一个空的Optional,ifPresent的返回是void是没法操作的。我用到Optional的时候一般是为null的时候返回一个默认值,optional不是用来做do something这种判断的工具,不要什么都想着用java8解决。附上我用到Optional的情况

        public enum Sex {
    MAN(1),WOMAN(2),UNKOW(0);

    private int type;

    Sex(int type) {
        this.type = type;
    }

    public int getType() {
        return type;
    }

    public static Sex getSex(int type){
        return Stream.of(Sex.values())
                .filter(o -> o.getType() == type)
                .findFirst() //Optional<Sex> 如果里面为null的时候返回else中的值
                .orElse(UNKOW);
    }
    }
Optional<String>.ofNullable(null).orElseGet(()->{
            // TODO: 2019/12/26  
            return "2345";
        });

注意要返回一个一致的泛型就行。


Optional.ofNullable(
                Optional.ofNullable(null).orElseGet(() -> {
                    // TODO:   空 返回null,为了后面的判断非空
                    System.out.println("空");
                    return null;
                }))
                .ifPresent(t -> {
                    // TODO:  不为空
                    System.out.println("非空");
                });