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.