java - @NotNull javax 注释与 Intellij @NotNull 注释

标签 java intellij-idea annotations

我应该使用这些注解中的哪一个? INTELLIJ 引入了自己的带有注释的库。我读到用这些注释标记方法参数和类属性是很好的实践,但我想知道它们做了什么。有很多带有注解的库(spring 也有像 Nullable 这样的注解)。 Javax 注释由验证特定类的 hibernate validator 实现,但 INTELLIJ 注释仅提醒或警告方法的属性。假设我有带有 Intellij 注释的类(class)

public class XYZ{
@NotNull
private int id;
@Nullable
private String z;
@NotNull
private String y;

} 和

public void method(@NotNull String a,String b)
{
...
}

所有注解都在运行时检查,如果 @NotNull 参数为空,Intellij 会做什么?它不会抛出任何错误或类似的东西,只会警告我,为什么它对我有用?我认为这对于尝试阅读我的代码的人来说可能更有用。

另一个例子,当我在我的用户中有 ManyToMany 关系时,我应该将它标记为 @Nullable 吗?当我创建新用户时,它每次都会为 null,所以没有必要,是吗?

最佳答案

我相信你在混合东西:

  1. intellij 注释帮助开发人员发现可能的错误。例如,如果你说一个参数是 Nullable,如果你没有保护你的代码免受 NullPointerExceptions,它会警告你。这可以在编译时完成(与运行时无关)。
  2. javax 验证注释是关于向字段添加验证并在不满足时抛出错误。 这是关于您的业务,而不是您代码中的错误;可能根本没有错误。例如,它们可用于验证外部输入是否符合特定条件。假设您在应用程序中实现了一个可从外部调用的 API。如果将 NotNull 注解添加到某个字段,如果 API 调用者未设置该字段,则会收到错误。您的应用程序非常好,完全没有错误。显然,这些验证是关于数据并在运行时完成的。

关于java - @NotNull javax 注释与 Intellij @NotNull 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45526994/

相关文章:

java - Jsch 文件上传已取消

java - java.util.HashMap 的 Intellij 弃用警告

Java:在单个声明中注释成员

java - @Autowired注解有什么好处?

java - 跳水比赛-Java程序

java - 编写自定义异常的最佳方法

java - 调用 Javascript 文件中的方法

ember.js - 在 IntelliJ IDEA 中使用命令行程序运行配置

java - 方法断点可能会大大减慢调试速度

java - JAX-RS/ Jersey : How can I "inherit" @Provider fields?