2
检查用@Nonnull注释的参数是否为null?
我们已经开始使用FindBugs并@Nonnull适当地注释了我们的参数,它很有效地指出了周期早期的错误。到目前为止,我们一直在null使用Guava的方法继续检查这些参数checkNotNull,但我宁愿null仅在边缘进行检查-无需检查即可输入值的地方null,例如SOAP请求。 // service layer accessible from outside public Person createPerson(@CheckForNull String name) { return new Person(Preconditions.checkNotNull(name)); } ... // internal constructor accessed only by the service layer public Person(@Nonnull String name) { this.name = Preconditions.checkNotNull(name); // remove this check? } 我了解这本身@Nonnull并不会阻止null价值观。 但是,鉴于FindBugs会指出将值从未标记字段转移到已标记字段的任何地方@Nonnull,我们是否可以依靠它来捕获这些情况(它确实如此),而不必在null传递给它们的任何地方检查这些值系统?我是否天真地想要信任该工具并避免进行这些冗长的检查? 底线:虽然删除null下面的第二张支票似乎很安全,但这是不好的做法吗? 这个问题可能与“ 如果有人不希望null,是否应该检查null”这个问题太相似了,但是我要特别问一下@Nonnull注解。