我想写一个通用的培训课程。
public class Pair<T> {
T first;
T second;
private Pair(T first, T second){
this.first=first;
this.second=second;
}
public T getFirst(){
return first;
}
public T getSecond(){
return second;
}
}
我让ide加等于并散列它自己。因此,她编写了以下实现:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Pair<?> pair = (Pair<?>) o;
return Objects.equals(first, pair.first) && Objects.equals(second, pair.second);
}
@Override
public int hashCode() {
return Objects.hash(first, second);
}
因为我还没弄明白,我不明白这句话:
Pair<?> pair = (Pair<?>) o;
为什么? <?>
? 她会把什么样的人放在那里,从哪里得到?我明白 Pair<T> pair = (Pair<T>) o;
错误,因为将删除该类型,但是<?>给我们?我很乐意帮你解决这个问题,谢谢。
1条答案
按热度按时间nue99wik1#
Pair<?>
是一种语法上的糖Pair<? extends Object>
这意味着您的eaquls方法将接受一个对象或一个类扩展对象。您可以查看此主题以了解更多详细信息泛型<?>的实际含义是什么?