Java @Nonnull默认情况下的一切

时间:2016-02-04 00:41:58

标签: java null optional

Java允许标记参数并返回@CanBeNull

对我而言,这感觉就像是一种不好的做法,我不想在99%的用例中告诉它它应该是空的并且污染无代码的代码。

相反,我更愿意告诉它 - 给定包中的所有内容都不应为null,除非我明确标记为name = 'name' print(name) name name.age = 'age' print(name.age) age name.age.other = 'other' print(name.age.other) other

有可能吗?

2 个答案:

答案 0 :(得分:0)

据我所知,@ Nonnull适用于IDE等工具,老实说我不打算用它来打扰它。

我想说它在Java中并不是严格可行的,尽管没有什么可以阻止你提出自己的注释,此时它只对你和你的团队有用,除非你更新了工具(IDE' s等)了解你的注释。

如果您使用Swift或Kotlin之类的语言,默认情况下val类型不能为null,如果您希望val类型为null,则添加一个?它表示它可能是null值。

我个人使用JavaDoc来解释何时我希望在输入时拒绝null,以及何时返回null。虽然使用Java 8,如果我期望一个方法返回null,我将使用Optional来指示可能会或可能不会返回一个值。

答案 1 :(得分:0)

@Foo形式的标记称为注释。某些库可以读取它们(@SuppressWarnings@Override等注释会影响编译器错误/警告报告。但是,@Nonnull@CanBeNull不是Java编译器/库本身的一部分(它们似乎来自checker framework),并且用作辅助开发和调试的指南。

除非您还使用使用它们来分析代码的库或工具,否则无需先使用这些注释。