【问题标题】:method overloading least specific method argument type [duplicate]方法重载最不具体的方法参数类型[重复]
【发布时间】:2017-11-06 06:48:34
【问题描述】:
public class Class1 {

    public void method(Object obj){
        System.out.println("Object");
    }

    public void method(String str){
        System.out.println("String");
    }

    public static void main(String... arg){
        new Class1().method(null);
    }

}

根据JVM,它会调用最具体的参数类型,在这种情况下最具体的是String,所以方法调用发生在字符串参数类型上,但我们需要调用Object参数类型的方法

【问题讨论】:

    标签: java


    【解决方案1】:

    您可以将 null 转换为字符串或对象以调用您的方法之一 null 是 String 的默认值,因此它在您的代码中调用 String 方法

     new Class1().method((String)null);
    
     new Class1().method((Object)null);
    

    【讨论】:

      【解决方案2】:

      您可以强制编译器通过将null 强制转换为Object 来选择采用Object 参数的方法:

      new Class1().method((Object)null);
      

      【讨论】:

        猜你喜欢
        • 2012-03-10
        • 1970-01-01
        • 2014-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多