问题描述
无聊中写了个测试
问题出现的环境背景及自己尝试过哪些方法
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
Employee employee = new Employee();
Employee employee1 = new Employee();
Employee employee2 = new Employee();
Employee employee3 = new Employee();
employee.setEmId("111");
employee1.setEmId("111");
employee2.setEmId("112");
employee3.setEmId("111");
employee3.setLineTime(222);
System.out.println("包含:"+employee);
System.out.println("包含:"+employee1);
ArrayList<Object> objects = new ArrayList<>();
objects.add(employee1);
objects.add(employee2);
objects.add(employee3);
if(objects.contains(employee)){
System.out.println("原始:"+objects);
System.out.println("包含:"+employee);
objects.remove(employee);
System.out.println("移除:"+objects);
objects.add(0,employee);
System.out.println("添加:"+objects);
}
}
输出结果:
包含:com.yangxu.market.entity.Employee@983c7d0
包含:com.yangxu.market.entity.Employee@983c7d0
原始:[com.yangxu.market.entity.Employee@983c7d0, com.yangxu.market.entity.Employee@46a38bef, com.yangxu.market.entity.Employee@983c8ae]
包含:com.yangxu.market.entity.Employee@983c7d0
移除:[com.yangxu.market.entity.Employee@46a38bef, com.yangxu.market.entity.Employee@983c8ae]
添加:[com.yangxu.market.entity.Employee@983c7d0, com.yangxu.market.entity.Employee@46a38bef, com.yangxu.market.entity.Employee@983c8ae]
你期待的结果是什么?实际看到的错误信息又是什么?
为什么new的两个新对象,会使用同一个地址??
Object.toString()
的默认实现是:Object.hashCode()默认对不同的对象会返回不同的值。
然而,toString 跟 hashCode 都是可以被重载的 ...
看你的程序,你的 employee 跟 empliyee1 是一样的,employee1, employee2, employee3 各不相同。那么,是不是 Employee 类的 equals 跟 hashCode 都被重载了呢 ...