簡體   English   中英

如何在重寫方法中調用原始方法

[英]How to invoke original method inside an overridden method

class Object{

    String x;
    int y;

    Object (String a, int b){
        this.x = a;
        this.y = b;

    @Override
    boolean equals(Object obj){

         return (this.x.equals(obj.x)) && this.y == obj.y);
    }
}

在這里,我試圖編寫一個覆蓋equals()的方法,以便同時將兩個值(字符串和整數)等同起來。 為了測試字符串相等性,我使用了我重寫的原始equals()方法。

我可以毫無錯誤地這樣做嗎? 或者我可以不在覆蓋它的方法中使用原始的equals()方法嗎? 有沒有更好的方法來實現這一目標?

我無法在網上找到這個問題的答案,但這可能是由於不了解這種情況的技術措辭。

謝謝

我認為問題是你沒有正確覆蓋Object.equals()方法。 如果您正在嘗試檢查String和int是否相等以使對象相等,則聽起來您希望新對象表示String和int一起表示的內容:

class MyObj {
    private String str;
    private int num;
    ...
}

(使用適當的getter和setter方法)

然后你可以像這樣覆蓋MyObj.equals():

@Override
boolean equals(MyObj that){
    /* First check for null and all that stuff */
    ...
    return this.str.equals(that.getStr()) && this.num == that.getNum();
}

呼叫:

super.whatevername();

或者在這種情況下:

super.equals(someObject);

這將調用超類的方法

順便說一下,equals的原始方法是

public boolean equals(Object obj)

順便說一句,您的整個返回塊可以替換為:

return (this.x.equals(obj.x)) && this.y == obj.y);

你這樣做的方式效率低下讓我感到畏縮:/

暫無
暫無

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

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