博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
匹配算法重载方法
阅读量:5943 次
发布时间:2019-06-19

本文共 1061 字,大约阅读时间需要 3 分钟。

(2.3.1附加信息)广泛

Java overload resolution——匹配算法重载方法如下面:

(1)找出全部可以调用的方法。

可以调用的方法意味着形參个数等于实參个数,实參的类型可以转换为方法形參的类型。

(2)假设实參与形參的类型可以直接相应。则运行该方法。

(3)假设可以调用的方法仅仅有一个。则运行该方法。

(4)可以调用的方法不止一个时,逐一作出推断:假设一个方法的类型签名都可以赋值给还有一个方法。则后者(类型大者)被排除;反复此操作,直到无法排除为止。【the Most Specific Method】

(5)经过步骤(4),假设仅仅剩下一个方法。则运行该方法。或者编译器报错。

可是。自己主动装箱和变长參数会使问题更复杂(还有import static 因素,在下一节2.3.2)。所以,大致了解一下就能够了。

①首先不考虑自己主动装箱和变长參数②再加上自己主动装箱再加上自己主动装箱变长參数

样例1:有void m(Object )、void m(int[] )、m(int )方法,

        Object obj = null;

        m(obj);

依照(2)调用m(Object )

样例2:有void m(Object )、void m(int[] )、m(int )方法,

        m(null);

依照(4),排除m(Object )后。调用void m(int[] )

样例3:有void m(Object )、void m(int[] )、m(String )方法,

        m(null);

依照(4),排除m(Object )后,void m(int[] )和m(String )无法排除。依照(5),编译报错。

样例4:有void f(double,float )、void f(float , double )方法,

         f(12 ,9);

依照(5),编译报错。

样例5:有void f(double,float )、void f(float , double )和void f(double ,int )方法,

         f(12 ,9);

依照(5),编译报错。f(double,float )- f(float , double )

样例6:有void f(double,float )、void f(float , double )和void f(float,int )方法。

         f(12 ,9);

依照(4), 调用f(float , int)

版权声明:本文博客原创文章。博客,未经同意,不得转载。

你可能感兴趣的文章
WPF中如何将ListViewItem双击事件绑定到Command
查看>>
《聚散两依依》
查看>>
小tips:你不知道的 npm init
查看>>
Mac笔记本中是用Idea开发工具在Java项目中调用python脚本遇到的环境变量问题解决...
查看>>
Jmeter也能IP欺骗!
查看>>
Rust 阴阳谜题,及纯基于代码的分析与化简
查看>>
ASP.NET Core的身份认证框架IdentityServer4(4)- 支持的规范
查看>>
(原創) array可以使用reference方式傳進function嗎? (C/C++)
查看>>
170多个Ionic Framework学习资源(转载)
查看>>
Azure:不能把同一个certificate同时用于Azure Management和RDP
查看>>
Directx11教程(15) D3D11管线(4)
查看>>
Microsoft Excel软件打开文件出现文件的格式与文件扩展名指定格式不一致?
查看>>
ios ble 参考
查看>>
linux中注册系统服务—service命令的原理通俗
查看>>
基于托管C++的增删改查及异步回调小程序
查看>>
Oracle DBMS_STATS 包 和 Analyze 命令的区别
查看>>
linux下基本命令
查看>>
windows server 2008R2 上安装配置freesshd
查看>>
手动删除SVCH0ST.EXE的方法
查看>>
已释放的栈内存
查看>>