java—为什么ide转换到他为泛型类生成的equals方法中的类型< ?>?

qeeaahzv  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(266)

我想写一个通用的培训课程。

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; 错误,因为将删除该类型,但是<?>给我们?我很乐意帮你解决这个问题,谢谢。

nue99wik

nue99wik1#

Pair<?> 是一种语法上的糖 Pair<? extends Object> 这意味着您的eaquls方法将接受一个对象或一个类扩展对象。
您可以查看此主题以了解更多详细信息泛型<?>的实际含义是什么?

相关问题