gpt4 book ai didi

java - @NotNull 和@Nullable,与java 注解相矛盾

转载 作者:行者123 更新时间:2023-11-29 06:29:53 32 4
gpt4 key购买 nike

发生在我身上的是我不小心做了这个:

@javax.annotation.Nullable
@javax.validation.constraints.NotNull

编译器没有报错,一切似乎都运行良好。

现在我想知道当两个或多个注释相互矛盾时内部发生了什么。此外,顺序重要吗?

这是吗

@Nullable
@NotNull

和这个一样吗?

@NotNull
@Nullable

一般来说,这对于注释是如何工作的?谁赢了?

编辑:我正在寻找一个一般性的答案,不一定是关于这两个注释

最佳答案

注解本身不会给您的代码带来任何逻辑。每个注释都应该使用适当的注释处理器进行处理。注释处理器是使注释有意义的人。

检查 official tutorial :

Annotations, a form of metadata, provide data about a program that is not part of the program itself. Annotations have no direct effect on the operation of the code they annotate.

Annotations have a number of uses, among them:

  • Information for the compiler — Annotations can be used by the compiler to detect errors or suppress warnings.
  • Compile-time and deployment-time processing — Software tools can process annotation information to generate code, XML files, and so forth.
  • Runtime processing — Some annotations are available to be examined at runtime.

让我们考虑一下您在上面提到的这 2 个特定注释。首先,它们并不相互排斥,具有不同的性质。

@javax.annotation.NullableJSR-305 的一部分它有相反的 - @javax.annotation.Nonnull。这些注释旨在注释您的类字段、方法参数和方法结果。您可以将它们与代码分析器一起使用,其中之一是 Findbugs

@javax.validation.constraints.NotNullJSR-303 aka Bean Validation 的一部分.所以这个注释与 @javax.annotation.Nullable 没有任何共同点,因为这些注释有不同的处理器。

每次你对注解语义有任何疑问时,你应该检查文档,当然你可以运行你的代码,看看会发生什么。

关于java - @NotNull 和@Nullable,与java 注解相矛盾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38185237/

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