java – 为什么在这个例子中调用hashcode?
发布时间:2020-05-25 17:05:04 所属栏目:Java 来源:互联网
导读:有人可以解释为什么在下面的例子中调用 hashCode? import java.util.List;public class JSSTest extends Object{ public static void main(String args[]){ JSSTest a = new JSSTest(); JSSTest b = new JSSTe
|
有人可以解释为什么在下面的例子中调用 hashCode? import java.util.List;
public class JSSTest extends Object{
public static void main(String args[]){
JSSTest a = new JSSTest();
JSSTest b = new JSSTest();
List<JSSTest> list = new java.util.ArrayList<JSSTest>();
list.add(a);
list.add(b);
System.out.println(list.get(0));
System.out.println(list.get(1));
}
@Override
public boolean equals(Object obj){
System.out.println("equals");
return false;
}
@Override
public int hashCode(){
System.out.println("hashCode");
return super.hashCode();
}
}
结果: hashCode 0 JSSTest@1bab50a hashCode 0 JSSTest@c3c749 解决方法默认的toString()实现调用hashCode.这与列表无关.这是一个相当小的repro: public class JSSTest {
public static void main(String args[]){
JSSTest test = new JSSTest();
// Just to show it's not part of creation...
System.out.println("After object creation");
test.toString();
}
@Override
public boolean equals(Object obj){
System.out.println("equals");
return false;
}
@Override
public int hashCode(){
System.out.println("hashCode");
return super.hashCode();
}
}
(您可以覆盖toString()以显示在/ super call / after之后.) 它在Object.toString()中有记录:
(编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
