gpt4 book ai didi

java - 基元和对象类型的方法重载

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

public class OverloadTest {

public static void main(String ar[]){
OverloadTest t = new OverloadTest();
t.add(5,5);
}

// 1st method
public void add(int i , int j){
System.out.println("In Primitive type" + (i+j))
}

// 2nd method
public void add(Integer i , Integer j){
System.out.println("In Object type" + (i+j))
}

}

这段代码完美运行。我想了解是否应该出现编译时错误,因为 5 将自动装箱为整数对象 (Integer.valueOf(5)) 并且应该选择第二种方法。为什么没有编译时错误?

最佳答案

为什么你会期望有自动装箱?当搜索合适的方法时,编译器首先检查是否有适用于普通 int 类型的方法。只有当没有找到这样的方法时,自动装箱才会发挥作用。

此过程在 JLS §18.5.1 中进行了描述。 .

关于java - 基元和对象类型的方法重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22915621/

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