java空安全检查和if条件优先
假设这样一个场景
if(event.getAdapter() != null && event.getAdapter().getCount() > 0)
在上面的代码中,首先检查它是否为null,然后检查count是否高于零。如果在第二个条件之前检查第一个条件,则此代码将按预期工作。但是如果(我听说jvm有时会开始检查大多数故障条件以加快速度)第二个条件比第一个条件被检查,那么这段代码将给出运行时错误
所以我的问题是,上面的检查代码安全吗?它会按预期工作吗?或者jvm有时可能从第二个条件开始
# 1 楼答案
以上代码是安全的。如果第一个计算是^{,JVM将使第二个计算短路
报告(部分)说
# 2 楼答案
当你使用&&;,所有条件将从左到右执行,直到其中一个条件被评估为false
例如:
如果B为false,则不计算C
但是,如果只使用一个&;,则;,您的所有条件都将被评估,即使其中一个条件是错误的。这是&;及&;作为逻辑运算符
我希望它能帮助你
# 3 楼答案
完全安全,当第二个线程无法更改适配器时
Java8可能会产生一个
Optional<Adapter>
,并允许使用不同的公式