gpt4 book ai didi

java - java重载方法的搜索顺序

转载 作者:行者123 更新时间:2023-12-01 13:13:11 25 4
gpt4 key购买 nike

我有以下方法:

static void f(double x)
{
System.out.println("f(double)");
}

static void f(Double xObj)
{
System.out.println("f(Double)");
}

static void f(double... s)
{
System.out.println("f(double...)");
}

public static void main(String[] args)
{
double x1 = 8.5;
Double xO1 = 5.25;
f(x1);
f(xO1);
}

输出:

f(double)

f(Double)

搜索重载方法的规则如下:

  1. 搜索重载方法,不包括带自动(取消)装箱的方法和带省略号的方法。
  2. 如果找不到方法,请使用包含自动(取消)装箱的方法再次搜索。
  3. 如果没有找到方法,请使用省略号包含方法再次搜索。

当使用原始参数调用方法f时,此规则适用,但当使用自动装箱参数调用时,此规则不适用。

谁能解释一下这个规则是否正确?正确的是什么?

感谢您的提前:)

最佳答案

Java 使用 this rule 选择适合参数的最具体方法

“当使用原始参数调用方法 f 时,此规则适用,但当使用自动装箱参数调用时,此规则不适用。”

当您删除方法 f(Double) 时,f(xO1) 将调用 f(double),因为这是 ,以及适合参数最具体方法。

作为引用,您可以查看 Java Language Specification

关于java - java重载方法的搜索顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22676060/

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