optional 订阅
optional 是一个英语单词,形容词,作形容词时意思是“可选择的,随意的”。 展开全文
optional 是一个英语单词,形容词,作形容词时意思是“可选择的,随意的”。
信息
外文名
optional
词    性
形容词
optional单词发音
英[ˈɒpʃənl];美[ˈɑːpʃənl] [1] 
收起全文
精华内容
下载资源
问答
  • Optional

    2021-01-10 19:58:38
    Optional描述 Optional是jdk1.8中java.util.Optional下的一个容器类,可以保存任意类型的值,代表这个值存在,或者仅仅保存Null,表示这个值不存在,用来避免空指针异常。 创建Optional(三种方式) (1). Optional....

    Optional描述

    Optional是jdk1.8中java.util.Optional下的一个容器类,可以保存任意类型的值,代表这个值存在,或者仅仅保存Null,表示这个值不存在,用来避免空指针异常

    创建Optional(三种方式)

    (1). Optional.of(T t) # t必须为非空
    (2). Optional empty = Optional.empty(); # 创建一个空的Optional对象
    (3). Optional.ofNullable(T t) # t可以为空,也可以不为空

    判断容器中是否包含对象

    boolean isPresent(); # 判断容器中是否包含对象

    获取容器中的对象

    (1) T get(); #返回容器中的值(与Optional.of搭配)
    (2)T orElse(T other); #容器中有值就返回容器中的值,若无则返回other

    Demo测试

    User user1 = new User(“szh1”);
    Optional userOptional = Optional.ofNullable(user1);
    User user2 = new User(“szh2”);
    User user = userOptional.orElse(user2); #若user1不为空,返回user1,若user1为空,返回user2
    System.out.println(user.toString());
    在这里插入图片描述

    展开全文
  • optional

    千次阅读 2019-06-27 08:40:22
    import java.util.Optional; import org.junit.Test; /* * 一、Optional 容器类:用于尽量避免空指针异常 * Optional.of(T t) : 创建一个 Optional 实例 * Optional.empty() : 创建一个空的 Optional 实例...

    package com.atguigu.java8;

    import java.util.Optional;

    import org.junit.Test;

    /*
     * 一、Optional 容器类:用于尽量避免空指针异常
     *     Optional.of(T t) : 创建一个 Optional 实例
     *     Optional.empty() : 创建一个空的 Optional 实例
     *     Optional.ofNullable(T t):若 t 不为 null,创建 Optional 实例,否则创建空实例
     *     isPresent() : 判断是否包含值
     *     orElse(T t) :  如果调用对象包含值,返回该值,否则返回t
     *     orElseGet(Supplier s) :如果调用对象包含值,返回该值,否则返回 s 获取的值
     *     map(Function f): 如果有值对其处理,并返回处理后的Optional,否则返回 Optional.empty()
     *     flatMap(Function mapper):与 map 类似,要求返回值必须是Optional
     */
    public class TestOptional {
        
        @Test
        public void test4(){
            Optional<Employee> op = Optional.of(new Employee(101, "张三", 18, 9999.99));
            
            Optional<String> op2 = op.map(Employee::getName);
            System.out.println(op2.get());
            
            Optional<String> op3 = op.flatMap((e) -> Optional.of(e.getName()));
            System.out.println(op3.get());
        }
        
        @Test
        public void test3(){
            Optional<Employee> op = Optional.ofNullable(new Employee());
            
            if(op.isPresent()){
                System.out.println(op.get());
            }
            
            Employee emp = op.orElse(new Employee("张三"));
            System.out.println(emp);
            
            Employee emp2 = op.orElseGet(() -> new Employee());
            System.out.println(emp2);
        }
        
        @Test
        public void test2(){
            /*Optional<Employee> op = Optional.ofNullable(null);
            System.out.println(op.get());*/
            
    //        Optional<Employee> op = Optional.empty();
    //        System.out.println(op.get());
        }

        @Test
        public void test1(){
            Optional<Employee> op = Optional.of(new Employee());
            Employee emp = op.get();
            System.out.println(emp);
        }
        
        @Test
        public void test5(){
            Man man = new Man();
            
            String name = getGodnessName(man);
            System.out.println(name);
        }
        
        //需求:获取一个男人心中女神的名字
        public String getGodnessName(Man man){
            if(man != null){
                Godness g = man.getGod();
                
                if(g != null){
                    return g.getName();
                }
            }
            
            return "苍老师";
        }
        
        //运用 Optional 的实体类
        @Test
        public void test6(){
            Optional<Godness> godness = Optional.ofNullable(new Godness("林志玲"));
            
            Optional<NewMan> op = Optional.ofNullable(new NewMan(godness));
            String name = getGodnessName2(op);
            System.out.println(name);
        }
        
        public String getGodnessName2(Optional<NewMan> man){
            return man.orElse(new NewMan())
                      .getGodness()
                      .orElse(new Godness("苍老师"))
                      .getName();
        }
    }
     

    展开全文
  • Optional

    万次阅读 2020-03-29 19:15:21
    Java8新特性:Optional

    Optional类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。

    Optional 是个容器:它可以保存类型T的值,或者仅仅保存nullOptional提供很多有用的方法,这样我们就不用显式进行空值检测。

    Optional 类的引入很好的解决空指针异常。

    ① 测试

    public class OptionalTest {
        
        public static void main(String[] args) {
            OptionalTest test = new OptionalTest();
            Integer val1 = null;
            Integer val2 = new Integer(10);
            //Optional.ofNullable - 允许传递为 null 参数
            Optional<Integer> op1 = Optional.ofNullable(val1);
            //Optional.of - 如果传递的参数是 null,抛出异常 NullPointerException
            Optional<Integer> op2 = Optional.of(val2);
            System.out.println(test.sum(op1,op2));
        }
        
        public Integer sum(Optional<Integer> a, Optional<Integer> b) {
            //Optional.isPresent():判断值是否为null
            System.out.println("参数1的值是否为null:" + a.isPresent());
            System.out.println("参数2的值是否为null:" + b.isPresent());
            //Optional.orElse - 如果值存在,返回它,否则返回默认值
            Integer val1 = a.orElse(0);
            //Optional.get - 获取值,值需要存在
            Integer val2 = b.get();
            return val1+val2;
        }
    }
    

    ② 类方法

    序号 方法 & 描述
    1 static <T> Optional<T> empty()返回空的 Optional实例。
    2 boolean equals(Object obj)判断其他对象是否等于 Optional。
    3 Optional<T> filter(Predicate<? super <T> predicate)如果值存在,并且这个值匹配给定的 predicate,返回一个Optional用以描述这个值,否则返回一个空的Optional。
    4 <U> Optional<U> flatMap(Function<? super T,Optional<U>> mapper)如果值存在,返回基于Optional包含的映射方法的值,否则返回一个空的Optional
    5 T get()如果在这个Optional中包含这个值,返回值,否则抛出异常:NoSuchElementException
    6 int hashCode()返回存在值的哈希码,如果值不存在 返回 0。
    7 void ifPresent(Consumer<? super T> consumer)如果值存在则使用该值调用 consumer , 否则不做任何事情。
    8 boolean isPresent()如果值存在则方法会返回true,否则返回 false。
    9 <U>Optional<U> map(Function<? super T,? extends U> mapper)如果有值,则对其执行调用映射函数得到返回值。如果返回值不为 null,则创建包含映射返回值的Optional作为map方法返回值,否则返回空Optional
    10 static <T> Optional<T> of(T value)返回一个指定非null值的Optional。
    11 static <T> Optional<T> ofNullable(T value)如果为非空,返回 Optional 描述的指定值,否则返回空的 Optional。
    12 T orElse(T other)如果存在该值,返回值, 否则返回 other。
    13 T orElseGet(Supplier<? extends T> other)如果存在该值,返回值, 否则触发 other,并返回 other 调用的结果。
    14 <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier)如果存在该值,返回包含的值,否则抛出由 Supplier 继承的异常
    15 String toString()返回一个Optional的非空字符串,用来调试
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 104,332
精华内容 41,732
热门标签
关键字:

optional