A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Java8中对空值提供了一个操作类。Optional。下面介绍下他的方法。



静态方法:

Optional.of(T)    返回Optional包裹的对象,如果传入的参数为空,将抛出空指针异常。

Optional.ofNullable(T) 返回Optional包裹的对象,参数如果为空返回空的Optional对象。

Optional.empty() 返回空的Optional对象。

实例方法:

isPresent()  是否存在,如果值为空返回false,否则返回true

get()值存在返回值否则抛出异常

map()值存在的情况下执行自定义方法,传入参数是值,返回可以是任意类型的对象。

filter()值存在的情况下执行自定义方法,传入参数是值,返回true或false。

flatMap()与map方法基本一致,不同的是,返回类型只能是值得类型。

代码如下:



package com.example.thread;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Optional;
import java.util.Random;

public class OptaionalTest {
private static Logger logger = LoggerFactory.getLogger(OptaionalTest.class);

    public static void main(String[] args) {
        OptaionalTest obj = new OptaionalTest();
        Optional<Integer> optional = obj.getNum();
        logger.info("optional.isPresent():" + optional.isPresent());
        optional.ifPresent((val1) -> {//值是否存在
            logger.info("optional.ifPresent():" + optional.get());
            logger.info("optional.get():" + optional.get());
            String map = optional.map((intVal) -> (intVal + 1000) + "").get();//map的返回值可以是任何类型的.
            logger.info("optional.map():" + map);
            optional.filter((intVal) -> {//新的方法以值为参数
                if (intVal > 25) {
logger.info("optional.filter()>25:" + intVal);
                    return true;
                }
logger.info("optional.filter()<=25:" + intVal);
                return false;
            });
            Optional<Integer> a = optional.flatMap((intVal) -> Optional.ofNullable(intVal + 1));//返回值必须是Optional类型的
        });
        logger.info("optional.orElse:" + optional.orElse(1));
        logger.info("" + optional.orElseGet(() ->

        {
logger.info("optional.orElseGet:" + -1);
            return -1;
        }));
    }

    Optional<Integer> getNum() {
        Integer num = new Random().nextInt(100);
        if (num < 50) {
return Optional.empty();
        }
return Optional.of(num);
    }
}

---------------------
【转载】仅作分享,侵删
作者:可乐代码君
原文:https://blog.csdn.net/fw118958/article/details/78871735


2 个回复

倒序浏览
奈斯
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马