Java 在返回类型为Nullable的方法上放置@Nullable的位置?

Java 在返回类型为Nullable的方法上放置@Nullable的位置?,java,annotations,nullable,Java,Annotations,Nullable,当使用javax.annotation.Nullable将方法标记为“可能返回null值”时,将@Nullable注释放在哪里?在方法上,还是返回类型 是否有任何技术上的差异,或者这完全是一个风格问题 样式A: @Nullable public Object blah() { ... } public @Nullable Object blah() { ... } 样式B: @Nullable public Object blah() { ... } public @Nullable Ob

当使用
javax.annotation.Nullable
将方法标记为“可能返回
null
值”时,将
@Nullable
注释放在哪里?在方法上,还是返回类型

是否有任何技术上的差异,或者这完全是一个风格问题

样式A:

@Nullable
public Object blah() { ... }
public @Nullable Object blah() { ... }
样式B:

@Nullable
public Object blah() { ... }
public @Nullable Object blah() { ... }

选项类型将为您提供帮助。返回类型的选项表示该方法可能返回一个对象,也可能返回类型为None或null的特殊值。

这完全是一个样式问题

无论在源代码中的何处编写注释,注释实际上都在方法上。这是因为
javax.annotation.Nullable
定义上的
@Target
元注释使得
javax.annotation.Nullable
成为方法注释。您可以在任意位置写入注释,因为 Java语言规范语法允许在方法注释中穿插方法修饰符,如
public

<>我认为把注释放在返回类型之前更清楚。毕竟,返回类型是非null的。说方法本身是非空的是没有意义的


将注释放在返回类型之前还有另一个重要的好处:您的代码与定义为类型注释的
Nullable
版本兼容。Java8中引入了类型注释。它们比方法注释更具表现力,并且支持更强大的检查。例如,Eclipse支持的
Nullable
注释和类型注释。

A
更具可读性。您还可以查看Java核心或Google Java库,您将看到第一种样式的使用。若该方法有多个注释,样式B将变得更糟。并没有添加选项来替换所有空值。看看这篇文章: