我有一个泛型类,它没有属性,但有一个具有泛型类型的方法。如何覆盖它的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> s
和Foo<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;
}