gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:16:09 25 4
gpt4 key购买 nike

我应该使用这些注解中的哪一个? 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com