繁体   English   中英

通过传递0和null的Null参数的方法重载

[英]Method Overloading for Null Argument by passing 0 and null

我在Stack Overflow上看到过有关为null参数重载方法的问题,但并没有解决我的困惑,因此我尝试了一些其他未解决的问题,这就是为什么要问这个问题。

我想知道为什么当我传递“ null”时它执行参数类型为double的函数,而当我传递“ 0”或任何其他数字如1,2,10等到函数时,它执行参数类型为“宾语”。 我知道NULL有区别, 这里有0。

谢谢!

码:

public class NullArgumentOverloading {

    public static void main(String[] args) {

        NullArgumentOverloading obj = new NullArgumentOverloading();
        obj.overLoad(null); // prints "Double array argument method."
        obj.overLoad(0); // prints "Object o argument method."
    }

    private void overLoad(Object o) {
        System.out.println("Object o argument method.");
    }

    private void overLoad(double[] dArray) {
        System.out.println("Double array argument method.");
    }
}

Java将始终尝试使用可用方法的最特定版本(请参见JLS 15.12.2 )。

Objectdouble[]都可以将null作为有效值。 因此,两者都是合适的。

Objectdouble[]的超类型,因此比Object更具体。 因此,这就是它显示“双数组参数方法”的原因。 当您将null传递给函数时

对于其他问题:正如注释中已经解释的那样,当您传递0 ,它是一个原始int ,它将被自动装箱到具有Object作为超类型的Integer中,因此它会打印“ Object o参数方法”。

您可以在“ 方法重载”中找到有关null参数的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM