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) {
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 obj1 = Optional.ofNullable(a);
if(obj1.isPresent()){
System.out.println("存在");
}else{
System.out.println("不存在");
}
Optional b1 = Optional.ofNullable(b);
System.out.println(obj1.orElse(2));
System.out.println(b1.orElse(3));
Integer c = null;
Optional 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("================");
Integer d = null;
Integer e = 2;
Optional d1 = Optional.ofNullable(d);
Optional e1 = Optional.ofNullable(e);
d1.ifPresent(p-> System.out.println("不为空1"));
e1.ifPresent(p-> System.out.println("不为空2"));
Optional 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 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 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 b1 = Optional.ofNullable(b);
//判断对象是否为空 如果不为空返回该对象,否则返回该方法的指定值
System.out.println(b1.orElse(666));
//如果该对象不为空就返回该对象,为空则返回该方法指定的方法值
Integer 没有值啊 = b1.orElseGet(() -> {
System.out.println("没有值啊");
return 777;
});
System.out.println(没有值啊);
//如果对象为空 这个方法会抛出一个异常对象,
//
//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);
}
}