首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@NotNull javax注释与Intellij @NotNull注释

@NotNull javax注释与Intellij @NotNull注释
EN

Stack Overflow用户
提问于 2017-08-05 22:46:22
回答 1查看 4.5K关注 0票数 8

我应该使用这些注释中的哪一个?INTELLIJ引入了带有注释的自己的库。我读到,用这些注释标记方法、参数和类吸引力是很好的实践,但我想知道它们是做什么的。有许多带有注释的库(spring也有类似于Nullable的注释)。Javax注释由hibernate验证器实现,它验证特定的类,但INTELLIJ注释只对方法的属性进行调整或警告。假设我有带有Intellij注释的类

代码语言:javascript
复制
public class XYZ{
@NotNull
private int id;
@Nullable
private String z;
@NotNull
private String y;

}和

代码语言:javascript
复制
public void method(@NotNull String a,String b)
{
...
}

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-05 23:08:53

我相信你是在混合:

  1. intellij注释是,以帮助开发人员发现可能的bug。例如,如果您说参数为Nullable,则如果您没有保护代码不受NullPointerExceptions影响,它将警告您。这可以在编译时完成(与运行时无关)。
  2. 相反,javax验证注释是关于向字段添加验证,如果不满足则抛出错误。--这是关于您的业务的,而不是您的代码中的bug;可能根本没有bug。例如,它们可以用于验证外部输入是否与特定条件匹配。让我们假设您在应用程序中实现了从外部调用的API。如果将NotNull注释添加到字段中,如果API调用方没有设置该字段,它将收到一个错误。您的应用程序非常好,完全没有bug。显然,这些验证是关于数据的,并且是在运行时完成的。
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45526994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档