参照api ,基本方法的简单使用案例基本都有:
package com.gksw.web.controller.system;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
public class TestController {
public static void main(String[] args) {
/**
* 返回一个空的 Optional
* Optional.empty
*/
Optional<Object> empty = Optional.empty();
/**
* 返回一个 Optional指定值的Optional,如果空,则返回一个空的 Optional
* Optional.empty
*/
Optional<Object> o = Optional.ofNullable(null);
/**
* 不可传入 null 否则报错 Optional<Object> o = Optional.of(null);
* 与 ofNullable 不同,ofNullable传入null 返回一个空的 Optional
*/
//Optional<Object> o1 = Optional.of(null);
/**
* 如果存在值 返回 true,否则为 false 。
* 返回 false
*/
boolean present = o.isPresent();
/**
* 判断optional 是否一致 true
* 返回 true
*/
boolean equals = Optional.ofNullable("123").equals(Optional.ofNullable("123"));
/**
* 如果 Optional中存在值,则返回值,否则抛出 NoSuchElementException 。
* 返回 123
*/
String s = Optional.ofNullable("123").get();
/**
* 返回值如果存在,否则返回 orElse 值
* 返回 123
*/
String s2 = Optional.ofNullable(s).orElse("1234");
/**
*参数:继承Supplier接口的other,当值为null的时候返回
* 返回:值存在返回值,值不存在返回other
* 异常:当不允许值为空的情况(例如)下值为空时或other无效抛NullPointerException
*
*/
Object s3 = Optional.ofNullable(null).orElseGet(() -> getString());
Object o1 = empty.orElseGet(() -> "1213123");
/**
* ifPresent :如果存在值,则使用该值调用指定的消费者,否则不执行任何操作。
*/
String a [] = {
"1","2"};
Optional.ofNullable(a).ifPresent(t-> {
for (String i:t){
System.out.println(i);
}
});
/**
* map 如果存在值,则应用提供的映射函数,如果结果不为空,则返回一个Optional结果的Optional 。 否则返回一个空的Optional
*
*/
int a1 [] = {
1,2};
Optional<List<String>> s1 = Optional.ofNullable(a1).map(t-> {
List<String> l = new ArrayList<>();
for (int i:t){
l.add(String.valueOf(i));
}
return l;
});
/**
* 如果一个值存在,并且该值给定的谓词相匹配时,返回一个 Optional描述的值,否则返回一个空的 Optional 。
* 异常
* NullPointerException - 如果谓词为空
*/
Uuser u = new Uuser();
u.setName("aaaa");
u.setAge(17);
Optional<Uuser> aaaa = Optional.ofNullable(u).filter(t -> t.getAge() > 0 && t.getName().equals("aaaa"));
System.out.println(aaaa.get());
}
public static String getString(){
return "111";
}
}
class Uuser{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Uuser{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}