작성
·
243
0
강의에서 OptionalInt같은 primitive type에서 사용할 수 있는 Optional 클래스들을 언급해 주셨는데, 이러한 타입을 사용하는 이유는 무엇일까요?
제 생각에는 Optional로 감싸는 것 또한 Integer로 박싱-언박싱하는 것과 비슷해 보이기도 하고, 또 primitive type은 null이 될 수 없지만 OptionalInt 자체가 null인 경우가 발생한다던지.. 여러가지 문제가 발생할 수 있을 것 같거든요
그런데도 primitive type에 Optional 클래스를 만들어둔 이유가 있을까요?
답변 1
4
Optional로 감쌀 수 있는게 오직 "객체" 뿐이기 때문입니다. primitive type은 객체가 아니라서 Optional로 만들지 못하기 때문에 OptionalInt와 같은 클래스를 제공합니다.
가령 어떤 int (primitive type) 값이 있을 수도 있고 없을 수도 있는 경우가 있다면, 그것을 표현할 수 있는 방법이 Integer라는 wrapper 타입의 객체를 만들어 감싸서 값이 없는 경우 null을 할당하는 것인데요. 그럼 다시 Optional로 이 Integer를 감싸서 null을 리턴하는 대신 Optional을 리턴하도록 개선할 수 있겠죠. OptionalInt를 사용하면 그런 과정을 조금 더 손쉽게 처리할 수 있게되는거죠. 굳이 int를 Integer로 감싼다음에 Optional에 넣는게 아니라 int를 바로 OptionalInt에 넣으면 되니까요.