【发布时间】:2016-05-13 10:42:32
【问题描述】:
Java 允许标记参数并返回为@Nonnull。
对我来说,这感觉是一种不好的做法,我不想在 99% 的用例中告诉它不应该为空,并用无用的噪音污染代码。
相反,我更愿意告诉它 - 给定包中的所有内容都不应为空,除非我明确将某些内容标记为 @CanBeNull。
有可能吗?
【问题讨论】:
Java 允许标记参数并返回为@Nonnull。
对我来说,这感觉是一种不好的做法,我不想在 99% 的用例中告诉它不应该为空,并用无用的噪音污染代码。
相反,我更愿意告诉它 - 给定包中的所有内容都不应为空,除非我明确将某些内容标记为 @CanBeNull。
有可能吗?
【问题讨论】:
据我所知,@Nonnull 用于 IDE 等工具,老实说,我倾向于不理会它。
我会说这在 Java 中是不可能的,尽管没有什么能阻止您提出自己的注释,此时它只会对您和您的团队有用,除非您更新工具(IDE 等)以理解你的注释。
如果您使用 Swift 或 Kotlin 之类的语言,默认情况下 val 类型不能为 null,如果您希望 val 类型除 null 之外,则添加 ?以表明它的值可能为空。
就我个人而言,我使用 JavaDoc 来解释什么时候我期望某些东西在输入时拒绝 null,以及什么时候它会返回 null。尽管在 Java 8 中,如果我希望一个方法返回 null,我将使用 Optional 来指示一个值可能会或可能不会返回。
【讨论】: