[英]How to override equals method in a non-attributes generic 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> s
和Foo<Boolean> b
應該是不同的,那么我該如何覆蓋 equals 來反映這一點呢? 還是寫這樣的類不好?
在我看來,如果沒有屬性(我認為是指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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.