0
点赞
收藏
分享

微信扫一扫

JAVA8特性:Optional使用方法

丹柯yx 2022-01-31 阅读 64
java



目录

​​常见场景​​

​​demo​​


传统 Java 的写法显得冗长难懂,而新的 ​​Optional<T>​​ +Lambda 则清新脱俗



常见场景

JAVA8特性:Optional使用方法_javaJAVA8特性:Optional使用方法_java_02JAVA8特性:Optional使用方法_java_03JAVA8特性:Optional使用方法_java_04


demo

package com.nio4444.demo.java8;

import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
import java.util.stream.Collectors;

public class MethodRefDemo {
public static void main(String[] args) {

Supplier<Person> personSupplier = Person::new ;
Person p1 = new Person(1,"q1",0);
Person p2 = personSupplier.get() ;

System.out.println(p1.getName());
System.out.println(p2.getName());


Optional<Person> p = Optional.ofNullable(p1) ;
String result = p.map(p3->p3.getName())
.map(name->name.toUpperCase())
.orElse(null) ;
System.out.println(result);

p = Optional.ofNullable(p2) ;
String result2 = p.map(p3->p3.getName())
.map(name->name.toUpperCase())
.orElse(null) ;
System.out.println(result2);

}
}

@Data
@NoArgsConstructor
@AllArgsConstructor
class Person implements Serializable {
private int age ;
private String name ;
private int mark ;

public static Person create(final Supplier<Person> s) {
return s.get() ;
}
}

JAVA8特性:Optional使用方法_java_05


举报

相关推荐

0 条评论