作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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/
我是一名优秀的程序员,十分优秀!