Basic/Java

Optional

HappyWeasel 2020. 11. 30. 23:34
import java.util.Date;
import java.util.Optional;

public class test {
    public static void main(String[] args){
        Optional<String> cls1 = Optional.empty();
        // null 값을 가지고 있는 Optional을 생성
        String str = null;
        Optional<String> cls2 = Optional.ofNullable(str);
        // null값도 허용한다.
        // empty, ofNullable은 값을 초기화한다.


        System.out.println("cls1 is Present: " + cls1.isPresent());
        // null을 가지고 있는지 확인/ true, false 리턴
        System.out.println("cls1 is Present: " + cls2.isPresent());

        System.out.println("cls1 orElse: "+ cls1.orElse("null"));
        // null이면 "null"로 리턴한다.

        Data d = new Data();

        Data c = null;


        Optional<Data> od = Optional.ofNullable(d);
        Optional<Data> od2 = Optional.ofNullable(c);

        System.out.println("od : " + od.isPresent());
        System.out.println("od2 : " + od2.isPresent());

        Data od3 = od2.orElseGet(() -> {
            Data aa = new Data();
            aa.setA("a");
            aa.setB("b");
            return aa;
        });
        // lambda로 null일 때 리턴할 객체를 생성할 수 있다.

        System.out.println("od3: " + od3.getA() + ", " + od3.getB());
    }
}

class Data {
    private String a;
    private String b;

    public void setA(String a){
        this.a = a;
    }

    public void setB(String b){
        this.b = b;
    }

    public String getA(){
        return a;
    }
    public String getB(){
        return b;
    }
}