inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

더 자바, Java 8

Optional 소개

Optional 을 인스턴스 필드 타입으로 쓰지 말자

338

인프런21

작성한 질문수 8

4

안녕하세요 백기선님,

13분 40초즈음 부터 나오는 설명에 대해 좀 더 궁금해서 문의드립니다. 인스턴스 필드 타입으로 옵셔널을 쓰면 더 명확해서 null 체크에도 도움이 되겠다 싶었는데요, 강의에서는 사용하지 말 것을 추천하셔서요. 

어떤 이유로 도메인 설계에 좋지 않은 것인지, 구체적인 회피 방법(말씀해주신 델리게이션을 실제로 구현하는 방법도 궁금합니다) 은 무엇인지 궁금합니다. 

감사합니다.

java

답변 4

5

백기선

스택오버 플로에서 Optional을 개발에 참여했던 개발자가 비슷한 질문에 답글을 단 것을 찾을 수 있습니다.

https://stackoverflow.com/questions/26327957/should-java-8-getters-return-optional-type/26328555#26328555

해당 답글을 한번 읽어보시기 바래요.

0

인프런21

전해주신 글에서 많은 도움을 받았습니다. 감사합니다.

0

인프런21

답변 감사드립니다. Optional을 만든 목적이 메소드 리턴타입으로 쓰기 위한 용도라고 하셨는데요, API 에서는 그러한 내용이 없는듯합니다. 관련하여 좀 더 자세히 알 수 있을만한 자료가 있을까요~?

  • https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html

감사합니다. 

0

백기선

Optional을 만든 목적이 메소드 리턴타입으로 쓰라는 용도로 만들어진거라 그밖에 다른 용도로 쓰신다면  Optional을 만든 취지에 어긋나게 사용하는 겁니다.

설계적인 측면에서 "어떤 필드가 있을 수도 있고 없을 수도 있다"라는 의미인데 "어떤 필드의 값이 있을 수도 있다 없을 수도 있다"와는 전혀 다른 이야기가 됩니다. 해당 필드가 그 도메인에 있는게 맞는지 다시 생각해 보는게 좋겠죠.

델리게이션은 제가 어떤 의미로 사용했는지 정확히 기억나진 않지만 아마도 null을 허용하는 레퍼런스 타입을 쓰는걸 말한것 같네요.

CompletableFuture의 get 실행에 대해 궁금한 점이 있습니다

0

231

2

기본 인터페이스의 기본 제공 메서드 관련 질문 (왜 이걸 사용하는지)

0

515

2

static 과 metaspace 관련 질문있습니다.

0

707

0

Map의 가장 큰 특징이 key는 null이 아니다

0

2377

2

Optional 질문드립니다.

0

469

0

인텔리제이 콘솔창

0

578

0

Supplier를 쓰는 이유

0

1355

1

allOf()에서 컬렉션으로 반환하는 것을 설명할 때 코드

0

706

1

[참고] LTS주기

0

468

1

orElseThrow()

1

1082

2

findFirst함수

0

357

1

메서드 레퍼런스

1

477

1

primitive type 질문

0

301

1

FunctionalInterface 상속 관계 질문

0

292

1

함수형 인터페이스를 왜 사용하나요?

1

496

1

while문 세미콜론

0

430

1

flatMap Optional과 Stream에서의 차이점을 제가 잘 이해했는지 헷갈립니다!

0

404

1

람다식과 익명 클래스

0

318

1

steam api 예제 git 주소

3

782

1

thread.sleep질문

0

383

2

.orElse 매개변수 질문

0

259

1

isPresent( ) 와 null 질문

0

333

1

예제 코드 질문

2

286

1

코드 질문있습니다.

0

233

1