gpt4 book ai didi

java - 如何在非属性泛型类中重写 equals 方法?

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

我有一个没有属性的泛型类,但有一个具有泛型类型的方法。如何重写它的 equals 方法?

   public Foo<T> {
boolean method(T bar){
if (bar instanceOf Boolean) // do something and return
if (bar instanceOf String) // do something and return
return false;
}
}

直观Foo<String> sFoo<Boolean> b应该不同,那么我如何覆盖 equals 来反射(reflect)这一点?或者写这样的类不好?

最佳答案

在我看来,如果没有属性(我认为它是指实例字段),那么该类可能无法被实例化,并且应该声明方法 static(类似于 Java API 中的Math 类)。无论如何,我认为您不需要覆盖 equals,因为您似乎不太可能比较多个实例。您可以按如下方式执行示例方法:

    public static <T> boolean method(T foo) {
if (foo instanceof String) {
System.out.println("You passed a string");
return true;
}
if (foo instanceof Integer) {
System.out.println("You passed an integer");
return true;
}
return false;
}

但是如果你真的想覆盖 equals,你可以这样做。

@Override
public boolean equals(Object o) {
return this == o;
}

关于java - 如何在非属性泛型类中重写 equals 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60584143/

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