对于以下程序,为什么要调用具有int和String参数的方法而不是long和Object?
想知道为什么编译器选择int一遍long又String一遍的Object参数。
注意:这是在采访中问到的。
public class MethodOverloadingTest {
public static void add(int n, int m){
System.out.println("Int method");
System.out.println(n+m);
}
public static void add(long n, long m){
System.out.println("Long method");
System.out.println(n+m);
}
public static void method(String st){
System.out.println("from String method");
}
public static void method(Object obj){
System.out.println("from Object method");
}
/**
* @param args
*/
public static void main(String[] args) {
add(2,3);
method(null);
}
}
Run Code Online (Sandbox Code Playgroud)
对于该add(2,3)方法,您正在传递整数,这就是为什么要调用整数的原因。对于method(null),选择了最具体的方法参数。在这种情况下,String比更加具体Object。因此method(String st);被称为。
| 归档时间: |
|
| 查看次数: |
2086 次 |
| 最近记录: |