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



我有一个泛型类,它没有属性,但有一个具有泛型类型的方法。如何覆盖它的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应该是不同的,那么我如何覆盖相等项来反映这一点呢?还是写这样的课不好?

在我看来,如果没有属性(我认为这是指instance字段(,那么类可能无法实例化,方法应该声明为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;
}

最新更新