黑马程序员技术交流社区

标题: 【上海校区】Java8新特性之Optional详解 [打印本页]

作者: 不二晨    时间: 2018-12-14 09:47
标题: 【上海校区】Java8新特性之Optional详解
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



作者: 不二晨    时间: 2018-12-18 17:45
奈斯




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2