다음과 같이 optional를 사용하여 npe를 방지하고자 하였음
int color = Optional.of(text.getStyle.getColor.getRgb())
.orElse(0xffffff);
만약 of() 메서드 안에 전달된 값에서 npe가 발생한다면 orElse()를 사용해 자동으로 흰색을 넣으려는 의도였으나 예외가 적절히 처리되지 않았음.
Optional.of() 가 예상과 달리 인자로 null을 허용하지 않는 메서드였기 때문에 발생한 문제였음
대신, null을 받을 수 있는 Optional.ofNullable() 메서드가 따로 존재했음
Optional.ofNullable()을 적용한 모습
int color = Optional.ofNullable(text.getStyle().getColor().getRgb())
.orElse(0xffffff);
여기서 npe를 발생시킬 수 있는 메서드는 getRgb()가 아닌 getColor()임. 따라서
int color = Optional.ofNullable(text.getStyle().getColor())
.map(textColor -> textColor.getRgb())
.orElse(0xffffff);
다음과 같이 color까지만 인자로 넣은 후 map()을 통해 헥사 코드를 추출하여 본래 의도대로 동작하는 코드를 작성할 수 있었음.