Avatar ·

¿Qué anotación Java @NonNull/@NotNull es mejor usar? Comparación y recomendaciones

¡Hola a todos! Soy un desarrollador Java principiante y ya llevo dos días rompiéndome la cabeza con una pregunta que parece simple: ¿qué anotación @NotNull (o @NonNull) debo usar en el proyecto?

El problema es que las veo en diferentes lugares y no entiendo cuál es la "correcta". Por ejemplo, en IntelliJ IDEA está su propia org.jetbrains.annotations.NotNull. En el proyecto Spring Boot me topé con javax.annotation.Nonnull (ahora jakarta.annotation.Nonnull). Y un colega dijo que es mejor usar jakarta.validation.constraints.NotNull o lombok.NonNull.

Aquí hay un ejemplo simple 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