kpug / fpij

functional programming in java
0 stars 0 forks source link

Option 을 어떻게 하면 안전하게 효율적으로 사용할 수 있을까? #14

Open jayden-17 opened 7 years ago

jayden-17 commented 7 years ago

in p157 Listing 6.1 The Option data type

public abstract class Option<T> {

...

    private static class Some<A> extends Option<A> {

        private final A value;

        private Some(A a) {
            value = a;
        }
...
    }

    public static <A> Option<A> some(A a) {
        return new Some<>(a);
    }
...
}

만약에 이렇게 사용하면 ...

Option<Integer> aaa = Option.some(null);

Java 8 의 Optional 에는 ofNullable(T value) 이라는 메소드가 null 을 가드해주는데 ...

public static <T> Optional<T> ofNullable(T value) {
        return value == null ? empty() : of(value);
}

혹시나 (절대 그러면 안되겠지만...) return type 이 Optional<String> 임에도 불구하고 혹시나 null 이 리턴된다면 ... 언어 자체에 null이 존재 하는한 ... Optional을 자유롭게 쓸 수 있는 것인가? ...

jayden-17 commented 7 years ago

JAVA 8 Optional

어제 JAVA 8 Optional 에 대해 대화했던 내용입니다.