gpt4 book ai didi

java - 编译器根据什么标准选择重载方法之一

转载 作者:行者123 更新时间:2023-12-01 23:29:06 26 4
gpt4 key购买 nike

选择一种方法而不是另一种方法的正式原因是什么(通过编译器)?为什么它选择第一个字节等。我知道 int 可以表示字节,但 float 也可以。为什么这么正式?

public class MethodCurrier {

public void setValue(int wrt){//naglowek
System.out.println("Typ int "+ wrt);
}
public void setValue(float wrt){//naglowek
System.out.println("Typ float "+ wrt);
}
public static void main(String[] args) {
MethodCurrier currier = new MethodCurrier();
currier.setValue(4);//int
currier.setValue(2.3f);//float
currier.setValue('c');//char
currier.setValue((byte)4);

}
}

最佳答案

Java 语言规范 defines如下:

If more than one member method is both accessible and applicable to a method invocation, it is necessary to choose one to provide the descriptor for the run-time method dispatch. The Java programming language uses the rule that the most specific method is chosen.

The informal intuition is that one method is more specific than another if any invocation handled by the first method could be passed on to the other one without a compile-time type error.

在您的情况下,int方法比float方法更具体,因为int可以隐式转换为 > float ,但反之则不然。

关于java - 编译器根据什么标准选择重载方法之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13104799/

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