gpt4 book ai didi

java - 重载方法调用的参数匹配期间的详细过程(步骤)

转载 作者:行者123 更新时间:2023-11-29 04:06:06 28 4
gpt4 key购买 nike

为什么 (2) c.ERR(模棱两可)?第一个方法参数 - char ('a') 被扩展为 float => 匹配。

如果找到匹配项,是否无需继续执行第 2 步(装箱/拆箱)或第 3 步(尝试可变参数)?或者我在 JLS 中错过了某事,并且尝试了第 2 步和第 3 步?

void f(float f, Character... args) {

}

void f(Character... args) {

}


f(1, 'a'); // OK - void f(float f, Character... args) chosen

f('a', 'b'); // c.ERR - ambiguous

1 可以

2 是 c.ERR - 不明确。

附言我找到了 this in JLS (15.12.2.)this on SO ,但这对我没有帮助。

最佳答案

int 1 可以是widenedfloat,但它不能是 boxedCharacter,因此只有 void f(float, Character...) 方法签名适用。

char 'a' 既可以扩展为 float 也可以装箱为 Character,所以loose invocation conversion context发现两种方法签名都适用。请注意,在松散调用上下文之前尝试的严格调用上下文找不到任何适用的签名,因为虽然它尝试扩大原语,但不允许将它们装箱。

关于java - 重载方法调用的参数匹配期间的详细过程(步骤),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58560417/

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