java - 如何在重写的方法中调用原始方法

标签 java overriding

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();
}

关于java - 如何在重写的方法中调用原始方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28100931/

相关文章:

java - Axis2如何限制一项Web服务

java - 在java中使用SHA1对密码进行哈希处理

java - 如何在重写 Activity 的方法之一的同时启动 Activity?

java - 将 JoinColumn 参数 insertable 和 updateable 设置为 null

java - Swig:如何将 "FILE"类型从 C++ 传递到 Java

java - 如何抛出 StackOverflowException

Python:为 __init__ 扩展 int 和 MRO

c++虚拟关键字与覆盖函数

java - 如果我们可以简单地覆盖父类(super class)的方法或使用抽象类,为什么还要使用接口(interface)呢?

java - 如何记录 RESTful 发布数据?