- import java.util.ArrayList;
- import java.util.List;
- public class Test {
- private String value = null;
- public Test(String v) {
- value = v;
- }
- public boolean equals(Test o){//参数为Test
- if(o==this) return true;
- if(o instanceof Test) {
- Test t = (Test) o;
- return this.value.equals(t.value);
- }
- return false;
- }
- public static void main(String[] args) {
- List list = new ArrayList();
- Test test1 = new Test("Object");
- Test test2 = new Test("Object");
- Test test3 = new Test("Object");
- Object test4 = new Test("Object");
- list.add(test1);
- System.out.println(list.contains(test2));
- System.out.println(test2.equals(test3));
- System.out.println(test3.equals(test4));
- }
- }
输出:false
true
false
- import java.util.ArrayList;
- import java.util.List;
- public class Test {
- private String value = null;
- public Test(String v) {
- value = v;
- }
- public boolean equals(Object o){//参数为Object
- if(o==this) return true;
- if(o instanceof Test) {
- Test t = (Test) o;
- return this.value.equals(t.value);
- }
- return false;
- }
- public static void main(String[] args) {
- List list = new ArrayList();
- Test test1 = new Test("Object");
- Test test2 = new Test("Object");
- Test test3 = new Test("Object");
- Object test4 = new Test("Object");
- list.add(test1);
- System.out.println(list.contains(test2));
- System.out.println(test2.equals(test3));
- System.out.println(test3.equals(test4));
- }
- }
输出为:true
true
true
本文通过两个Java示例对比了使用不同参数类型的 equals 方法如何影响 List 中 contains 方法的行为。当 equals 方法接受 Test 类型参数时,即使对象相同,contains 返回 false;而将参数类型改为 Object 后,即使是比较不同的对象实例,contains 和 equals 均能正确识别出对象内容相等。
1345

被折叠的 条评论
为什么被折叠?



