对于以下程序,为什么调用带有 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);
}
}
最佳答案
对于 add(2,3)
方法,您传递的是整数,这就是调用整数的原因。
对于method(null)
,选择最具体的方法参数。在本例中,String
比 Object
更具体。因此 method(String st);
被调用。
关于java - java 中关于 int/long 和 String/object 参数的方法重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20699306/