如何覆盖非属性泛型 class 中的 equals 方法?

How to override equals method in a non-attributes generic class?

我有一个泛型 class,它没有属性,但有一个泛型类型的方法。如何覆盖它的 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 来反映这一点呢?还是这样写一个class不好?

在我看来,如果没有属性(我认为是指 instance 字段),那么 class 可能无法被实例化,并且应该声明方法static(就像 Java API 中的 Math class)。无论如何,我认为您不需要覆盖 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;
}