【发布时间】:2019-04-10 02:08:00
【问题描述】:
我正在尝试从泛型类型调用“equals”方法。 在运行时,该类型具有“等于”的重载 但 Object.equals(Object obj) 仍然被触发。
这是调用'equals'的通用类。
public class SortedGroup <T> {
void func(T element1,T element2) {
if (element1.equals(element2))
System.out.println("yes");
else
System.out.println("no");
}
这是重载'equals'的新类型类
public class Person {
private int ID;
public Person(int ID) {
this.ID = ID;
}
...
public boolean equals(Person o) {
return (this.ID == o.ID);
}
...
}
这是主要的。
Person p1 = new Person(1);
Person p2 = new Person(1);
SortedGroup<Person> SG = new SortedGroup<Person>();
SG.func(p1,p2);
}
我希望输出是yes,但实际输出是no
【问题讨论】: