这个问题是基于一个Android场景,但它一般适用于Java。
在Android中,ContentValues
类有很多put()
方法,包括:
put(String key, Float value)
put(String key, Integer value)
我们的代码有:
contentValues.put(myKey, myCondition ? Utils.getFloat(something) : Utils.getInt(something));
我们观察到,当 this 被执行时,它总是put(String key, Float value)
被调用。即使三元运算符解析为整数值也会发生这种情况,因为myCondition
不满足。
在我们的例子中,用 a 替换它可以if-else
解决问题。我真的要求解释VM何时以及如何选择要执行的方法。
如果已经回答,请将其标记为重复。提前致谢!