gpt4 book ai didi

java - 什么时候处理 Java 注释?

转载 作者:行者123 更新时间:2023-11-29 08:42:22 24 4
gpt4 key购买 nike

一方面是 @NonNull,对此 Oracle 表示“编译器可以确定代码路径可能接收到空值的情况,而无需调试 NullPointerException”。所以,我想它是在编译时处理的。

另一方面是@Inject,它注入(inject)构造函数、方法和字段,而不考虑它们的访问修饰符。所以,我想它们是在运行时处理的。

让我感到困惑的另一件事是,即使字段是私有(private)的,也可以在运行时注入(inject)这些字段。是不是说有@Inject的字段就一定有setter?

最佳答案

完全取决于the runtime retention policy of the annotation .

例如,@Inject 注释的保留策略是RUNTIME;这意味着运行代码可以检查此类注释并对其采取行动(顾名思义,此处通过“注入(inject)”值)。

我不太了解 @NonNull,但它可能与 JSR 305 中的 @Nonnull 的工作方式相同,后者的保留策略为 CLASS。例如,它在 FindBugs 等工具中用于执行字节码分析,并在检测到误用如此注释的元素时发出警告。

最后,@Override 是一个带有 SOURCE 保留策略的注解示例,编译器可以使用它来确定代码滥用注解并引发编译失败。

关于java - 什么时候处理 Java 注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39117020/

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