使用javax.annotation.Nullable
将方法标记为“可能返回null
值”时,在哪里放置@Nullable
注释?在方法上,还是返回类型?
是否存在任何技术差异,或者这是严格的风格问题?
样式A:
@Nullable
public Object blah() { ... }
样式B:
public @Nullable Object blah() { ... }
答案 0 :(得分:12)
这绝对是一种风格问题。
无论您在源代码中的哪个位置编写注释,注释实际上都在该方法上。这是因为@Target
定义上的javax.annotation.Nullable
元注释,这使得javax.annotation.Nullable
成为方法注释。您可以在任一位置编写注释,因为
Java语言规范语法允许方法注释穿插方法修饰符,例如public
。
我认为在返回类型之前放置注释更清楚。毕竟,它是非null的返回类型。说方法本身是非空的是没有意义的。
在返回类型之前放置注释还有另一个重要好处:您的代码与定义为类型注释的Nullable
版本兼容。类型注释是在Java 8中引入的。它们比方法注释更具表现力,它们可以实现更强大的检查。例如,Eclipse支持的Nullable
注释和Checker Framework是类型注释。
答案 1 :(得分:-2)
选项类型可以帮到你。返回类型的Option表示该方法可以返回Object,或者它可以返回None或null类型的特殊值。