在具有可空返回类型的方法上放置@Nullable的位置?

时间:2014-09-21 12:04:40

标签: java annotations nullable

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

是否存在任何技术差异,或者这是严格的风格问题?

样式A:

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

样式B:

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

2 个答案:

答案 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类型的特殊值。