Optional类

  • https://www.jianshu.com/p/94c69d2ef00f
  • Optional类
    是一个容器可以存放非空或是空的对象,可以判断出对象是否为空,
    主要是判断是否为null,可以类似于if-else等操作,
    但是不是要取代if-else
package com.bjsxt.servier1.controller;

import com.sun.media.sound.SoftTuning;

import java.sql.SQLOutput;
import java.util.Optional;

public class Style  {
    public static void main(String[] args) {
        /** Optional类 是一个容器里面可以存放对象,可以存放为null的对象
         *  Optional.of(obj) 传入一个非空的对象
         *  Optional.ofNullable(obj) 允许传入一个空对象
         *  isPresetn() 是一个判断空的方法 如果这个类被创建了或是这个属性有值则返回true
         *  get() 取对象
         *
         * */
        Integer a = null;
        Integer b = 1;
        String obj = new String("rudy");
        String nulls = "";
        Test test = new Test();
        Son son = new Son();
        son.setName("rudy");
        String name = son.getName();
        Optional<Object> obj1 = Optional.ofNullable(a);
        if(obj1.isPresent()){
            System.out.println("存在");
        }else{
            System.out.println("不存在");
        }
        Optional<Integer> b1 = Optional.ofNullable(b);
        /** orElse(T t) 传入一个默认值来作为否则之后的内容
         *  如果Optional容器中有值怎输出,没有值则输出默认值就是orElse()中的值
         * */
        System.out.println(obj1.orElse(2));
        System.out.println(b1.orElse(3));
        /** orElseGet() 这个方法是如果Optional容器中对象为空时不再是返回默认值
         * 而是返回一个方法
         * */
        Integer c = null;
        Optional<Object> optional = Optional.ofNullable(c);
        Object o = optional.orElseGet(() -> son.getName());
        Object r = optional.orElseGet(() -> {
            System.out.println("空的");
            return "傻逼";

        });
        System.out.println(o);
        System.out.println(r);
        System.out.println("================");
        /** ifPresetn() :Optional中所存的对象中不为空时会执行指定代码
         * */
        Integer d = null;
        Integer e = 2;
        Optional<Integer> d1 = Optional.ofNullable(d);
        Optional<Object> e1 = Optional.ofNullable(e);
        d1.ifPresent(p-> System.out.println("不为空1"));
        e1.ifPresent(p-> System.out.println("不为空2"));
        /** 小练习 map方法相当于是 if(!=null){}  包含了isPresent 是否存在
         * orElse()方法就是else{}
        */
        Optional<Integer> e2 = Optional.ofNullable(d);
        String s = e2.map(y -> {
            System.out.println("有有有");
            return "不为空";
        }).orElse("没有啊");
        System.out.println(s);

        Integer f = 1;
        System.out.println(f+f);
        Optional<Integer> f1 = Optional.ofNullable(f);
        Object rudy = f1.map(v -> v + v).map(v -> v + v).map(v -> {
            System.out.println(v);
            return null;
        }).orElse("rudy");
        System.out.println(rudy);


    }
}

package com.bjsxt.servier1.controller;

import com.sun.media.sound.SoftTuning;

import java.sql.SQLOutput;
import java.util.Optional;

public class Style  {
    public static void main(String[] args) throws Throwable {
        Integer a =1;
        Integer b =null;
        Optional<Integer> a1 = Optional.ofNullable(a);
        //两个对象是否相等
        System.out.println(a1.equals(1));
        System.out.println(a1.equals(b));
        System.out.println(a1.isPresent());
        Integer rudy = a1.orElse(666);

        Optional<Integer> b1 = Optional.ofNullable(b);
        //判断对象是否为空 如果不为空返回该对象,否则返回该方法的指定值
        System.out.println(b1.orElse(666));
        //如果该对象不为空就返回该对象,为空则返回该方法指定的方法值
        Integer 没有值啊 = b1.orElseGet(() -> {
            System.out.println("没有值啊");
            return 777;
        });
        System.out.println(没有值啊);
        //如果对象为空 这个方法会抛出一个异常对象,
       /* b1.orElseThrow(()->{
            System.out.println("抛出一个异常");
            return new Throwable("异常");
        });*/
        //
        //filter是筛选添加一个条件 满足后执行指定 否则执行orElse
        Integer integer = a1.filter(v -> v > 1).orElse(666);
        System.out.println(integer);
        //map主要是判断是否null 然后进行操作 
        Integer integer1 = a1.map(o -> o + o).orElse(999);
        System.out.println(integer1);
    }
}

上一篇:linux服务器上运行java web项目,数据库数据写入时间相差14个小时


下一篇:关于数据库Pycharm连接MySQL报错------serverTimezone的一些问题: