算法如下
但是Java中还存在主动装箱和变长參数, 这会使问题更复杂(还有import static 因素)
所以,大致了解一下就够了
以下是几个例子
①首先不考虑自己主动装箱和变长參数②再加上自己主动装箱③再加上自己主动装箱变长參数
样例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)
编译器并不总是能选择到正确的方法, 如果和泛型搭配, 可能会发生意外情况, 比如这个 https://blog.22xcode.com/post/138
https://www.cnblogs.com/mfrbuaa/p/4713799.html https://www.cnblogs.com/keeya/p/12780847.html https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.12.2
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。