在返回类型为 null 的方法上放置@Nullable在哪里?

2022-09-03 01:13:26

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

是否存在任何技术差异,或者这完全是一个风格问题?

样式 A:

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

样式 B:

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

答案 1

这完全是一个风格问题。

无论您在源代码中的哪个位置编写注释,注释实际上都在方法上。这是因为 对 的定义的元注释,它构成了方法注释。您可以在任一位置编写注释,因为 Java 语言规范语法允许方法注释中穿插方法修饰符,例如 。@Targetjavax.annotation.Nullablejavax.annotation.Nullablepublic

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

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


答案 2

选项类型将为您解决问题。Option 的返回类型指示该方法可能返回 Object,也可能返回类型为 None 或 null 的特殊值。


推荐