gpt4 book ai didi

java - 重写泛型类中的 equals() 方法

转载 作者:行者123 更新时间:2023-12-02 08:20:25 26 4
gpt4 key购买 nike

我想重写此类中的 equals() 方法。我在重写 equals() 方法时遵循通常的规则,但我将对象类型转换为我的类类型

但在我的 equals() 方法中,只有当对象具有相同的泛型类型时,我才想返回 true。

如何在 equals() 方法中检查实例的运行时类型?

这是我的代码:

public class GenericsRunTimeType<T> {

private T foo;
public GenericsRunTimeType(T foo){
this.foo = foo;

}

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

// Before doing this I want to test if obj and this are of the same generic type
GenericsRunTimeType other = (GenericsRunTimeType) obj;
if(other.equals(obj))
return true;
else
return false;
}

}

最佳答案

根据您的情况,您可以检查:

foo.getClass().equals(other.foo.getClass())

这是因为您的类中已经有一个 T 类的成员。然而,在常见情况下,当您没有这样的成员时,请查看@Rohit Jain 所做的回答。 (+1)

关于java - 重写泛型类中的 equals() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18307490/

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