方法重写原始和对象类型

时间:2014-04-07 14:40:56

标签: java oop overloading

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))并且应该选择第二种方法。为什么没有编译时错误?

1 个答案:

答案 0 :(得分:3)

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

此过程在JLS §18.5.1

中有所描述
相关问题