【问题标题】:Where to put @Nullable on methods with nullable return types? [duplicate]将@Nullable 放在返回类型可以为空的方法上的位置? [复制]
【发布时间】:2014-09-21 12:04:39
【问题描述】:

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

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

样式 A:

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

样式 B:

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

【问题讨论】:

  • A 更具可读性。您还可以查看 Java 核心或 Google Java 库,您会看到使用第一种样式。如果您对该方法有多个注释,则样式 B 会变得更糟。

标签: java annotations nullable


【解决方案1】:

这完全是风格问题。

无论你在源码的什么地方写注解,注解其实是在方法上。这是因为javax.annotation.Nullable 定义上的@Target 元注释,这使得javax.annotation.Nullable 成为方法注释。您可以在任一位置编写注释,因为 Java 语言规范语法允许方法注释穿插在方法修饰符中,例如public

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 2020-09-23
    • 2020-09-16
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    相关资源
    最近更新 更多