为什么Java在重载方法时会以这种方式运行?

时间:2018-05-03 15:26:52

标签: java overloading boxing autoboxing

给出以下代码:

public class Clazz {

    private static String foo(Integer value) {
        return "Integer";
    }

    private static String foo(float value) {
        return "float";
    }

    public static void main(String[] args) {
        System.out.println(foo(10));
        System.out.println(foo(10f));
    }

}

为什么打印出来?

float
float

我希望得到以下结果:

Integer
float

2 个答案:

答案 0 :(得分:0)

整数不是浮动的基元。

要获得你想要的东西,你应该使用:

System.out.println(foo(new Integer(10)));

答案 1 :(得分:-1)

试试吧。我感觉它不是正确的类型

Interget interger = 10;
System.out.println(foo(interger));
System.out.println(foo(10f));