@NotNull javax注释与Intellij @NotNull注释

用户8371723:

我应该使用哪些注释?INTELLIJ引入了带有注释的自己的库。我读到,用这些注释标记方法参数和类属性是很有意义的,但是我想知道它们的作用。有很多带注解的库(spring也有像Nullable这样的注解)。Javax批注由休眠验证器实现,该验证器验证特定的类,但是INTELLIJ批注仅对方法的属性起作用或发出警告。可以说我有Intellij注释的类

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

}和

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

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

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

albert_nil:

我相信您正在混合一些东西:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章