我有一个没有属性的泛型类,但是具有泛型类型的方法。如何覆盖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
(如Math class
在Java API中)。无论如何,我都不认为您需要覆盖均等值,因为您似乎不可能比较多个实例。您可以按如下所示进行操作:
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;
}
但是,如果您确实想覆盖等于,则可以执行以下操作。
@Override
public boolean equals(Object o) {
return this == o;
}