gpt4 book ai didi

java - 通过传递 0 和 null 为 Null 参数重载方法

转载 作者:行者123 更新时间:2023-11-29 08:25:09 32 4
gpt4 key购买 nike

我在 Stack Overflow 上看到过关于 null 参数重载方法的问题,但没有解决我的困惑,我尝试了一些不同的东西,这些答案在答案中没有讨论,这就是为什么问这个问题。

我想知道当我传递“null”时它执行参数类型为 double 的函数,当我将“0”或任何其他数字如 1、2、10 等传递给函数时它执行参数类型的函数类型是“对象”。我知道 NULL 和 0 here 是有区别的是区别。

谢谢!

代码:

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[] 的父类(super class)型,因此比 Object 更具体。这就是它打印“双数组参数方法”的原因。当您将 null 传递给函数时

对于其他问题:正如评论中已经解释的那样,当您传递 0 时,它是一个原始的 int,将被自动装箱到一个 Integer 中,该 Integer 具有 Object 作为父类(super class)型,所以它打印“Object o argument method”。

您可以在 Method Overloading for null argument 中找到更多信息

关于java - 通过传递 0 和 null 为 Null 参数重载方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53832277/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com