Avatar ·

Qual anotação Java @NonNull/@NotNull é melhor usar? Comparação e recomendações

Olá a todos! Sou um desenvolvedor Java iniciante e já estou há dois dias quebrando a cabeça com uma pergunta aparentemente simples: qual anotação @NotNull (ou @NonNull) usar no projeto?

O problema é que vejo elas em lugares diferentes e não entendo qual é a "correta". Por exemplo, no IntelliJ IDEA existe a própria org.jetbrains.annotations.NotNull. No projeto Spring Boot, encontrei javax.annotation.Nonnull (agora jakarta.annotation.Nonnull). E um colega disse que é melhor usar jakarta.validation.constraints.NotNull ou lombok.NonNull.

Aqui está um exemplo simples que me confunde:

import org.jetbrains.annotations.NotNull;

public class UserService {

    public String greet(@NotNull String name) {
        return "Hello, " + name;
    }

    public static void main(String[] args) {
        UserService service = new UserService();
        System.out.println(serv