为什么没有Java autobox int to Integer for .equals(Object)方法?

时间:2014-08-24 08:22:26

标签: java autoboxing

我正在研究一些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()));
}

2 个答案:

答案 0 :(得分:5)

我认为“this.myInt”是一个int而不是一个Integer。自动装箱可以在参数中使用。这是一些例子

int a = 1;
int b = 1;
Integer c = 1;
Integer d = 1;

a.equals(b); // doesnt work as equals isn't define on int
c.equals(b); // work, c is an Integer/Object and b is autoboxed
c.equals(d); // work, both are Integer/Object

答案 1 :(得分:1)

您可以使用return (this.myInt==mc.getMyInt());equals()方法仅为Objects定义。