繁体   English   中英

基本类型和对象类型的方法重载

[英]Method Overloading for Primitive and Object types

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对象(Integer.valueOf(5)),并且应该选择2nd Method。 为什么没有编译时错误?

您为什么期望会有自动装箱? 在搜索适当的方法时,编译器首先检查是否存在适用于纯int类型的方法。 只有找不到这种方法,自动装箱才会起作用。

JLS§18.5.1中描述了此过程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM