"null"은 "Optional"에서 사용되선 안됩니다.

 

null로 인해 에러가 발생할 수 있을 때 Optional을 사용하는 것이 Optional의 컨셉입니다. 그런 면에서 null을 대체하며, Optional을 사용한다면 사용하는 쪽에서 이 값이 null일 수도 있다는 걱정이 들게해선 안됩니다.

규칙을 어긴 코드

public void doSomething () {
  Optional<String> optional = getOptional();
  if (optional != null) {  // 규칙을 어긴 코드
    // optional을 이용해 뭔가 동작을 함
  }
  Optional<String> text = null; // 규칙을 어긴 코드, Optional 타입인 경우, 이 값 자체가 null 이어선 안됩니다.
  // ...
}

@Nullable // 규칙을 어긴 코드
public Optional<String> getOptional() {
  // ...
  return null;  // 규칙을 어긴 코드
}

규칙을 준수한 해결책

public void doSomething () {
  Optional<String> optional = getOptional();
  optional.ifPresent(
    // optional을 이용해 뭔가 동작을 함
  );
  Optional<String> text = Optional.empty();
  // ...
}

public Optional<String> getOptional() {
  // ...
  return Optional.empty();
}

If you like SONARKUBE, don’t forget to give me a star. :star2:

원문으로 바로가기

Star This Project