在网上看了一段代码,没明白错在哪里,请高手指点
- Java code
public class Pair<T>{ private Object first=null; private Object second=null; public Pair(Object fir,Object sec){ this.first=fir; this.second=sec; } public Object getFirst(){ return this.first; } public Object getSecond(){ return this.second; } public void setFirst(Object fir){ this.first=fir; } public boolean equals(T value){ return (first.equals(value)&&second.equals(value)); }}
------解决方案--------------------
你equals 你重写的话肯定要和Object的一样啊。。equals(Object obj)
------解决方案--------------------
不然就算重载了而不是重写。楼主要慎重。
------解决方案--------------------
1、就如一楼所说的,如果重写的话
public boolean equals(T value){
return (first.equals(value)&&second.equals(value));
}
改成
public boolean equals(Object value){
return (first.equals(value)&&second.equals(value));
}
2、如果你想写自己的方法的话,把equals这个方法换个其他名字就行了,比如:
public boolean equals(T value){
return (first.equals(value)&&second.equals(value));
}
改成
public boolean equal(T value){
return (first.equals(value)&&second.equals(value));
}
------解决方案--------------------
注意:只要覆盖了object的equals方法,
就要一起覆盖hashcode()方法,不然用equals方法会在其他发面带来错误的结果