2016-07-07 25 views
2

我正在創建兩個對象類的多對多映射。我是否需要編寫hashCode()equals()方法;如果是這樣,NetBeans自動生成代碼的幫助?netbeans能否爲映射自動生成正確的hashCode()和equals()方法?

+0

你只當你執行比較兩個對象需要'equals'和'hashCode'。 – eatSleepCode

+0

「它需要hashcode和equals方法嗎」如果你的意思是「do * I *必須實現它們」,那麼這取決於你想要做什麼;請參閱[爲什麼我需要重寫Java中的equals和hashCode方法?](http://stackoverflow.com/questions/2265503/why-do-i-need-to-override-the-equals-and-hashcode-方法-在-java的)。 –

+0

由於您使用'ManyToMany'映射,因此您的參數之一將是對象的集合,因此從技術上講,您將需要equals和hashcode方法。因此,您需要決定「equals」方法的實現,也許您可​​以使用生成的'hashCode'方法。 – eatSleepCode

回答

0

是的,您可以使用IDE生成的哈希碼來比較兩個實例。你的情況足以讓你的情況更爲重要的是平等的方法,注意比較平等的參數。自動生成的代碼將比較所有參數,但您可能只需要幾個參數來唯一標識它。

假設您需要查看從DB中讀取的記錄是否屬於同一個實體,只需比較equals方法中的主鍵即可。選擇平等標準完全是你的自由裁量權。

3

是的,它可以!

只需右鍵單擊已創建對象的類,然後選擇插入代碼。標題爲「Generate」的小菜單將彈出各種選項,其中包括equals()和hashCode(),選擇它並預設,NetBeans會爲您生成代碼覆蓋。測試一下equals方法,這次它會工作。

注意:當你選擇「equals()和hashCode()」時,出現一個對話框,只需選中你想要處理的所有變量的兩邊框即可。見下圖:

Generate equals() and hashCode on NetBeans

相關問題