我试图了解如何通过转换调用重载方法.让我用我正在尝试的示例解释我的问题
public class Autoboxing {
public void meth(Integer i){
System.out.println("Integer");
}
public void meth(long i){
System.out.println("Long");
}
public void meth(int... i){
System.out.println("int");
}
public void meth(Object i){
System.out.println("Object");
}
public static void main(String[] args) {
Autoboxing box= new Autoboxing();
box.meth(5);
}
}
Run Code Online (Sandbox Code Playgroud)
这里的输出是:长
为什么在Wrapper Integer中调用带有参数long的方法.请解释.
重载分辨率有三个阶段.第一阶段试图找到一个匹配的方法,而不使用自动装箱和varargs(这是为什么meth(long i)选择而不是meth(Integer i)).仅当第一阶段没有找到任何匹配时,第二阶段才会尝试使用自动装箱找到匹配方法.
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |