Avatar ·

应该使用哪个Java @NonNull/@NotNull注解?比较与建议

大家好!我是一名Java新手开发者,已经第二天在为这个看似简单的问题困扰:项目中应该使用哪个@NotNull(或@NonNull)注解?

问题在于,我在不同地方看到它们,不明白哪个是“正确的”。例如,IntelliJ IDEA有自己的org.jetbrains.annotations.NotNull。在Spring Boot项目中,我遇到了javax.annotation.Nonnull(现在是jakarta.annotation.Nonnull)。而同事说最好使用jakarta.validation.constraints.NotNull或lombok.NonNull。

下面是一个让我困惑的简单示例:

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(service.greet(null));
    }
}