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
。
有可能吗?
答案 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),并且用作辅助开发和调试的指南。
除非您还使用使用它们来分析代码的库或工具,否则无需先使用这些注释。