如何理解Java中myMethod的精确性


今天就跟大家聊聊有关如何理解Java中myMethod的精确性,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在抖音上看到一道题,觉得挺有意思,以前也没仔细琢磨过,在这里跟大家分享一下。咋一看,传递给方法的参数是一个空的对象引用,因此,初看起来,该程序好像应该调用参数类型为Object 的重载版本,并且将打印出Object。另一方面,Str 香港云主机ing也是引用类型,因此null也可以应用于类型为String的重载版本。你由此可能会得出结论:这个调用是模棱两可的,该程序应该不能编译。如果你试着去运行该程序,就会发现这些直观感觉都是不对的:该程序打印的是String。
ava的重载解析过程是以两阶段运行的。第一阶段选取所有可获得并且可应用的方法或构造器。第二阶段在第一阶段选取的方法或构造器中选取最精确的一个。如果一个方法或构造器可以接受传递给另一个方法或构造器的任何参数,那么我们就说第一个方法比第二个方法缺乏精确性。在我们的程序中,两个方法都是可获得并且可应用的。方法构造器myMethod(Object)可以接受任何传递给myMethod(String)的参数,因此myMethod(Object)相对缺乏精确性。(每一个String都是一个Object,但是每一个Object并不一定是一个String。)因此,最精确的方法就是myMethod(String),这也就解释了为什么程序会产生这样的输出。如何想输出Object你可以这样调用myMethod((Object)null).看完上述内容,你们对如何理解Java中myMethod的精确性有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注开发云行业资讯频道,感谢大家的支持。

相关推荐: 如何解决工作中遇到的SQL优化

这期内容当中小编将会给大家带来有关如何解决工作中遇到的SQL优化,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。利用最左前缀法则:中间字段不能断,因此查询用到了name索引,从key_len=74也能看出,age索引列用在排序…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 08/22 13:15
Next 08/22 13:16

相关推荐