2017-06-02 347 views
2

我們有一個子類,我們不需要任何equals和hashcode比較。它在超級類中處理。PMD和FindBugs衝突

但FindBugs的給無差錯EQ_DOESNT_OVERRIDE_EQUALS:這個類繼承的類定義equals方法,並添加字段,但沒有定義equals方法本身。因此,這個類的實例的平等將忽略子類的標識和添加的字段。確保這是預期的,並且您不需要重寫equals方法。即使您不需要重寫equals方法,也可以考慮重寫它以記錄子類的equals方法返回調用super.equals(o)的結果的事實。

當我們剛剛通過調用super沒有壓倒一切的:

@Override 
public boolean equals(Object o) { 
    return super.equals(o); 
} 

@Override 
public int hashCode() { 
    return super.hashCode(); 
} 

現在PMD是給無差錯UselessOverridingMethod:覆蓋方法只調用超類中定義的方法相同。

我該如何解決這個問題?

回答

3

移除該方法,使用findbugs-exclude-filter.xml或SuppressWarnings/SuppressFBWarnings忽略FindBugs錯誤。

+0

我已經做了註釋,但這是一個適當的解決方案? – xploreraj

+0

@xploreraj,是的。由於這是你的意圖,在這種情況下FindBugs錯誤是誤報。壓制它是很好的。 –

+0

很酷。那就是! – xploreraj