【发布时间】:2025-12-20 07:30:06
【问题描述】:
我正在研究一些 java 类,并重写 .equals(Object) 方法来测试我的类的整数变量,当我确定它抛出错误说我不能使用原始类型 int 时,我感到很惊讶在 java 文档中说编译器会自动将原始类型自动装箱到方法的包装器类型中。
public boolean equals(Object o)
{
if (!(o instanceof myClass))
return false;
myClass mc = (myClass)o;
return (this.myInt.equals(mc.getMyInt()));
}
【问题讨论】:
-
我在这里猜测,但我在想,当方法需要
Integer时,它会自动装箱,但当它需要Object时(你可能知道它是一个 @ 987654325@) 不会 -
自动装箱适用于分配(包括参数分配)。您正在尝试在
this.myInt.equals(...)中使用它,其中myInt是一个原语。这里没有可用的自动装箱。 -
假设
getMyInt()返回int,this.myInt() == mc.getMyInt()在这里很好 -
正如@Jim 所说,只有分配与自动装箱有关。在 Scala 中没有
implicit的概念可以满足您的期望;) -
“我确信它在 java 文档中说过编译器会自动将原始类型自动装箱到方法的包装器类型中。”它没有。看看它到底说了些什么。
标签: java autoboxing