通过阅读现有帖子,我了解到不应在生产代码中使用“断言”,但是 IntelliJ 在使用我知道不会为 NULL 的方法时给我的第一个提示,但在其他方面仍然可以为 Nullable,是告诉我应该使用“断言”
在上面的代码中,当创建一个新的 ItemStack 时,ItemMeta 不会为 null,但是如果 ItemStack 也为 null,它可以为 null,这就是它没有以 @NotNull 注释开头的原因。
知道了这一点,如何处理这个Warning才是最正确的呢?是因为我知道它永远不会为空而忽略它,还是仍然进行空检查。如果要进行空检查,断言或我已经在做的方式是
if(fillerMeta != null)
最佳答案
I have come to learn that "assert" should not be used in production code
这非常值得商榷。如果您断言 fillerMeta != null
,则表示这不能为 null 或我的代码存在严重错误。
那太好了。但是如果你想断言某些东西,或者错误处理某些东西,你需要小心。断言类似 1 + 1 == 2
的东西很好,因为如果事实证明数学不能那样工作,那么您所做的所有其他假设也可能不成立。因此,程序爆炸就可以了。
如果 fillerMeta
可能为 null,因为它是从您认为可能返回 null
的函数返回的,您应该改为进行错误处理。例如。 if (fillerMeta == null) throw new Exception...
并优雅地处理它。
关于java - 可以在我知道不会为空的字段上使用断言吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57646350/