我班级的 String 成员变量之一是可选的。用 Lombok 注释 @NonNull 标记它是否有意义?
如果成员变量是 Map 而不是 String,我想问同样的问题。答案会改变吗?
我班级的 String 成员变量之一是可选的。用 Lombok 注释 @NonNull 标记它是否有意义?
如果成员变量是 Map 而不是 String,我想问同样的问题。答案会改变吗?
可选的要点是制作流畅的API。字段不是也不应该是API 的一部分。
Optional<Object> obj
领域之间和Object obj
领域对您来说有什么区别?
这两个字段都可以用 注释@NotNull
。用 注释字段@NotNull
会给您与注释 an 相同的结果,Optional
但没有任何额外的调用,例如ifPresent()
. 如果您想使用Optional
将链接操作应用于字段 - 您使用Optional
的方式错误。没有理由Optional
在现场使用。
您可以在 openjdk 邮件列表可选讨论中阅读更多内容。
拥有 Optional 可以实现流畅的 API mail.openjdk
是的,您应该将每个Optional
变量标记为@NonNull
.
Optional 类型的变量永远不应为空。Stuart Marks关于使用 Optional 的规则以:
如果您编写@NonNull
,那么您将获得工具帮助以确保您不违反此重要规则。
如果你不写@NonNull
,那么你只有自己的个人纪律来防止你犯错误,客户也可能犯错误。
因此,您应该编写@NonNull
,作为机器可读和机器检查的文档,该变量不应为空。
这不仅适用于字段(成员变量),还适用于您使用的任何地方Optional
。