Ugl*_*leh 1 java minecraft bukkit
通过阅读现有文章,我了解到“断言”不应在生产代码中使用,但是IntelliJ给我的第一个技巧是,当我使用一种我知道不会为NULL的方法时,但在其他方面还是可以为Null的,是要告诉我应该使用“断言”
在上面的代码中,创建新的ItemStack时ItemMeta不会为null,但是如果ItemStack也为null,则可以为null,这就是为什么它没有@NotNull批注的原因。
知道这一点,处理此警告的最正确方法是什么?是因为我知道它永远不会为空而忽略它,还是仍然进行空检查。如果要执行null检查哪种类型,请断言或我已经做过的方式是
if(fillerMeta != null)
Run Code Online (Sandbox Code Playgroud)
我已经了解到“断言”不应在生产代码中使用
这是很值得商榷的。如果您在断言fillerMeta != null
,您是说这不能为null或我的代码有严重错误。
很好 但是,如果要声明某些内容或错误处理某些内容,则需要小心。断言类似的事情1 + 1 == 2
是可以的,因为如果事实证明数学不能以这种方式起作用,那么您所做的所有其他假设也可能不在窗外。因此,程序只需爆炸即可。
如果fillerMeta
可能为null,因为它例如是从某个函数返回的,那么您认为可能会返回null
,则应改为执行错误处理。例如,if (fillerMeta == null) throw new Exception...
并妥善处理。
归档时间: |
|
查看次数: |
73 次 |
最近记录: |