簡體   English   中英

為什么Java autobox int for Integer for .equals(Object)方法?

[英]Why doesn't Java autobox int to Integer for .equals(Object) method?

我正在研究一些java類,並且正在重寫.equals(Object)方法來測試我的類的整數變量,並且當它拋出錯誤說我無法使用原始類型int時,我很驚訝,當我確定它說在java docs中,編譯器會自動將autobox基本類型轉換為方法的包裝類型。

public boolean equals(Object o)
{
    if (!(o instanceof myClass))
        return false;
    myClass mc = (myClass)o;
    return (this.myInt.equals(mc.getMyInt()));
}

我想“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

你可以使用return (this.myInt==mc.getMyInt()); equals()方法僅為Objects定義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM