gpt4 book ai didi

java - java编译器 "most specific method calling rule"是如何工作的?

转载 作者:行者123 更新时间:2023-11-29 08:21:38 24 4
gpt4 key购买 nike

我无法理解 java 在函数重载中的“选择最具体的方法”规则是如何工作的。

我有一个实现函数重载的类。有两个同名“show”的函数。一次接受对象类型参数,其他接受字符串类型。

我正在调用传递 null 的函数。调用带有 String 类型参数的方法。

class Test
{

public void show(String s)
{
System.out.println("hi");
}

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


public static void main(String s[])
{
Test t = new Test();
t.show(null);
}
}

输出将为“Hi”。请帮助我理解解释。

最佳答案

Java 将始终尝试使用可用方法的最具体版本。

两种方法

public void show(Object o) { ... }

public void show(String s) { ... }

可以将 null 作为有效值。在这种情况下,使用了采用 String 参数的重载,因为 StringObject 更具体。

如果添加第三种方法

public void show(Integer t) { ... }

您的代码将无法再编译,因为 StringInteger 不相关。两者都不比另一个更具体,编译无法决定使用哪个。

关于java - java编译器 "most specific method calling rule"是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57270880/

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