如何在重写的方法中调用原始方法
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() 方法吗?有没有更好的方法来实现这一目标?
我不太能在网上找到这个问题的答案,但这可能是因为我不知道这种情况的技术措辞。
谢谢
通话:
super.whatevername();
或者在这种情况下:
super.equals(someObject);
这将调用超类的方法
顺便说一下,equals 的原始方法是
public boolean equals(Object obj)
顺便说一下,您的整个 return 块可以替换为:
return (this.x.equals(obj.x)) && this.y == obj.y);
你这样做的方式效率低下,让我感到畏缩:/
我认为问题在于您没有正确覆盖 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();
}
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() 方法吗?有没有更好的方法来实现这一目标?
我不太能在网上找到这个问题的答案,但这可能是因为我不知道这种情况的技术措辞。
谢谢
通话:
super.whatevername();
或者在这种情况下:
super.equals(someObject);
这将调用超类的方法
顺便说一下,equals 的原始方法是
public boolean equals(Object obj)
顺便说一下,您的整个 return 块可以替换为:
return (this.x.equals(obj.x)) && this.y == obj.y);
你这样做的方式效率低下,让我感到畏缩:/
我认为问题在于您没有正确覆盖 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();
}