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

kev*_*rpe 7 java annotations nullable

javax.annotation.Nullable用于将方法标记为"潜在返回null值"时,在何处放置@Nullable注释?在方法上,还是返回类型?

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

风格A:

@Nullable
public Object blah() { ... }
Run Code Online (Sandbox Code Playgroud)

风格B:

public @Nullable Object blah() { ... }
Run Code Online (Sandbox Code Playgroud)

mer*_*nst 13

这完全是一种风格问题.

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

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

在返回类型之前放置注释还有另一个重要的好处:您的代码与Nullable定义为类型注释的版本兼容.类型注释是在Java 8中引入的.它们比方法注释更具表现力,它们可以实现更强大的检查.例如,NullableEclipse和Checker Framework支持的注释是类型注释.