gpt4 book ai didi

java - java 中的通用类和 equals() 方法 : type safety

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:13:02 28 4
gpt4 key购买 nike

我想覆盖泛型类中的 equals() 方法,为此我必须将 Object 转换为我的泛型类型 Pair。

我添加了@SuppressWarnings("unchecked") 来“静音”警告,但问题仍然存在。方法 getType() 和 getClass() 也不适用于泛型类型,因此使用 T.getType() 是不可能的。

public class Pair<T, U> {
private T first;
private U second;

public Pair(T _first, U _second)
{
first = _first;
second = _second;
}

public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;

//Problem ahead!!!
Pair<T, U> other = (Pair<T, U>) obj;

...
}
}

是否有任何通用的良好做法或“技巧”可以正确安全地执行此操作?

最佳答案

你可以投objPair<?, ?>并调用equalsfirstsecond :

Pair<?, ?> other = (Pair<?, ?>) obj;
return other.first.equals(first) && other.first.equals(second);

这样类型检查将由 T.equals 处理和 U.equals ,随便TU是。

关于java - java 中的通用类和 equals() 方法 : type safety,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55533651/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com