IDE:Eclipse; 语言:Java核心
package p1;
public class StringTestA {
/**
* @param args
*/
public static void main(String[] args) {
Object o1 = new StringTestA();
Object o2 = new StringTestA();
StringTestA o3 = new StringTestA();
StringTestA o4 = new StringTestA();
if (o1.equals(o2)) {
System.out.println("Object o1 and o2 are eqals");
}
if (o3.equals(o4)) {
System.out.println("Object o3 and o4 are eqals");
}
}
public boolean equals(StringTestA other) {
System.out.println("StringTestA equals mathod reached");
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
StringTestA equals method reached
Object o3 and o4 are equals
Run Code Online (Sandbox Code Playgroud)
如果未覆盖则等于没有输出.
问题:为什么System.out.println("Object o1 and o2 are eqals");行不打印,因为equals返回true;
你不是压倒一切equals(Object).论证必须是Object,而不是StringTestA.而是重载 equals(创建一个具有相同名称的不同方法).
始终注释要覆盖的方法@Override.如果您碰巧在方法声明中出错,这样做会导致编译错误,就像您在此处所做的那样.
@Override
public boolean equals(Object obj) {
//...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |