代码之家  ›  专栏  ›  技术社区  ›  displayName

自动装箱规则

  •  -2
  • displayName  · 技术社区  · 8 年前

    为什么该方法中会发生自动装箱

    public static int compareAges(Person p1, Person p2) {
        return ((Integer) p1.getAge()).compareTo(p2.getAge());
    }
    

    但是我们在方法中得到了一个编译器错误

    public static int compareAges(Person p1, Person p2) {
        return p1.getAge().compareTo(p2.getAge());
    }
    


    根据Javadocs:

    自动装箱是Java编译器在原语类型及其相应的对象包装类之间进行的自动转换。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Oleg    8 年前

    当您在原语上调用方法时,Java选择不支持自动装箱,可能是因为James Gosling自己永远不会做这样的事情,所以这当然意味着没有其他开发人员会需要它。

    this answer .

    因为詹姆斯·戈斯林说过:

    詹姆斯·戈斯林。资料来源: http://www.gotw.ca/publications/c_family_interview.htm

        2
  •  1
  •   Viet    8 年前

    https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html

    将原语值(例如int)转换为 相应的包装类(整数)称为自动装箱。这个 当基元值为以下值时,Java编译器应用自动装箱:

    • 分配给相应包装类的变量。