java - java 中关于 int/long 和 String/object 参数的方法重载

标签 java overloading

对于以下程序,为什么调用带有 int 和 String 参数的方法而不是 long 和 Object?

想知道为什么编译器选择 int 而不是 longString超过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),选择最具体的方法参数。在本例中,StringObject 更具体。因此 method(String st); 被调用。

关于java - java 中关于 int/long 和 String/object 参数的方法重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20699306/

相关文章:

java - APACHE POI 创建损坏的文件 - 无论我做了什么更改

java - 如何将包中的类导入到另一个包中?

Java 函数式接口(interface)与具有较少输入参数的方法匹配

c# - 无法访问我的扩展方法

Java - 方法重载

c++ - C++中重载运算符的引用

java - 将 EditText 可见性更改为隐藏

java - 从 Python 程序中使用 -Xms 和 -Xmx 参数执行 jar 文件

swift - 功能使用不明确(Swift 4)

c++ - C++中运算符之间的逗号