繁体   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