gpt4 book ai didi

java - 我是否需要在实现时再次@Nonnull?

转载 作者:搜寻专家 更新时间:2023-10-30 21:29:14 26 4
gpt4 key购买 nike

虽然我认为应该有一个关于是否继承注释的通用规则,但我特别感兴趣的是让 FindBugs 识别我的规则,所以这个问题是 FindBugs 特定的。

据我所知,JavaDoc 注释取自接口(interface)并在实现时被忽略。这个概念是否也适用于像 @Nonnull(或 @NotNull)这样的注解?

鉴于 @Override 注释,至少可以添加接口(interface)中不存在的额外注释。

在下列情况下会发生什么? FindBugs 会识别所有这些吗?关于整洁代码,哪一个是首选?

  1. 接口(interface)@Nonnull,实现@Override
  2. 接口(interface)@Nonnull,实现@Override@Nonnull
  3. 接口(interface)没有注解,实现 @Override,@Nonnull`

最佳答案

选择选项 2:

  1. Interface @Nonnull, Implementation @Override @Nonnull

如果 FindBugs 和许多其他工具(如 IDE)在正确的位置找到注释,它们会做得更好。这些注释不会被继承,正如 this section 底部的 JLS 声明的那样:

Annotation inheritance only works on classes (not methods, interfaces, or constructors)

因此工具需要自行寻找它们。有些工具可以做到这一点,但即使是 FindBugs 也不能始终如一地做到这一点(我最后检查过)。

关于java - 我是否需要在实现时再次@Nonnull?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28894461/

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