簡體   English   中英

如何在非屬性泛型類中覆蓋 equals 方法?

[英]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> sFoo<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM