java - 为什么 Java 在重载方法时会有这样的行为?

标签 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

最佳答案

整数不像 float 那样是基元。

要得到你想要的,你应该使用:

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

关于java - 为什么 Java 在重载方法时会有这样的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50158737/

相关文章:

java - 使用 java asm 获取函数参数值以进行字节码检测

c# - C# 4.0 中的方法重载与可选参数

java - 方法重载和覆盖有什么区别?

c# - Int32.CompareTo(int x) 性能

java - 这段代码中是否发生了装箱/拆箱?

java - 正则表达式查找更大数字中的所有固定长度数字

java - Web 应用程序无法建立与数据库的连接

java - 将 ScrollPane 添加到 JTextArea

c++ - 如果类类型是按值调用的函数的参数,是否会调用该类的重载赋值运算符?

c# - CLR 如何知道装箱对象的类型?