gpt4 book ai didi

java - 使用 null 参数进行意外重载方法编译器选择

转载 作者:行者123 更新时间:2023-12-02 03:41:58 25 4
gpt4 key购买 nike

我很惊讶为什么输出与我期望的有很大不同,我有两个重载方法,一个有一个字符串,另一个有一个对象作为参数,当使用空参数调用此方法时,输出只是打印 "String"并且不调用以对象作为参数的方法。

为什么Java选择以String作为参数的方法,java如何确定调用哪个重载方法?

class TestingClass {
public void test(String s) {
System.out.println("String");
}

public void test(Object o) {
System.out.println("Object");
}

public static void main(String[] args) {
TestingClass q = new TestingClass();
q.test(null);
}
}

最佳答案

此代码中没有重写,只有方法重载。当编译器必须选择执行两个 test 方法中的哪一个时(因为 null 可以传递给这两个方法),它会选择具有更具体参数类型的方法 - test(String s) - StringObject 更具体,因为它是 Object 的子类。

可以使用以下方式调用另一个方法:

q.test((Object) null);

关于java - 使用 null 参数进行意外重载方法编译器选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36735188/

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