java-VM如何选择正确的方法执行?

java-VM如何选择正确的方法执行?,第1张

概述这个问题基于Android场景,但通常适用于Java.在Android中,ContentValues类具有许多put()方法,包括:put(Stringkey,Floatvalue)put(Stringkey,Integervalue)我们的代码有:contentValues.put(myKey,myCondition?Utils.getFloat(something):Utils.getInt(something));

这个问题基于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));

我们已经观察到,执行此 *** 作时,始终会调用put(String key,float value).即使由于不满足myCondition而将三元运算符解析为整数值,也会发生这种情况.

在我们的案例中,用if-else替换它可以解决问题.我真的是想解释一下虚拟机何时以及如何选择要执行的方法.

如果已经回答过,请将其标记为重复.提前致谢!

解决方法:

方法重载在编译时解决,而不在运行时解决.三元表达式的类型为Number-大概有put(String key,Number value)方法或put(String key,Object value)方法.编辑:我被告知它实际上是被强制为float. JLS describes this in more detail.

其他语言可以在运行时解决重载.此功能被称为double-dispatch,因为首先按参数类型然后按自身类型对方法进行两次分派.

总结

以上是内存溢出为你收集整理的java-VM如何选择正确的方法执行?全部内容,希望文章能够帮你解决java-VM如何选择正确的方法执行?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1076545.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存