2010-10-28 70 views
13

我有一個覆蓋equals()的類,我想看看這個等於工作區中正在使用的方法。使用Eclipse,我通常使用Ctrl-Shift-g來查找工作區中的所有引用。不幸的是,對於equals(),它將我的工作空間中的每個等於的參數從任何類型拉回,而不僅僅是我忽略它的那個,並且不可能找出許多結果中哪些與我的搜索有關。我想做什麼?如何在Eclipse的工作區中查找類型特定的equals()引用?

編輯:澄清。我有一個覆蓋equals方法的類A.我有一個B類(和其他),其中使用 A類,但不擴展它。我想找到哪些類在我的工作區使用不管類的equals方法無論他們是否屬於A類的層次結構,如B級

回答

3

一般來說,你不能這樣做,因爲等於就是對的對象,採取例如

mysession.getAttribute(「someobject」)。等於(富)

沒有辦法檢測到該對象是你的班級類型。

+0

好點。沒有考慮到這一點。 – 2010-10-31 08:05:15

+1

我不同意「接受的答案」。很明顯,「潛在的匹配」可能會被忽略,你不會得到100%正確的答案。但是對於許多程序員來說,找到「明確的匹配」會非常有用。目前在eclipse中不可能找到覆蓋函數的明確匹配(但是eclipse會找到所有對Object.equals()的引用)。我會考慮這至少是糟糕的設計,甚至可能是一個錯誤。 – letowianka 2015-04-08 14:11:18

-1

你的equals方法右鍵單擊並選擇選項

References--> Hierarchy

+0

如果我有它覆蓋equals方法A類,我正在尋找的代碼庫,其中A.equals所有地方()是被叫。重寫的層次不是我所追求的。 – 2010-10-28 12:23:49

+0

此方法將在Class A的子類中找到equals方法的任何用法,但在Class B中找不到任何用於擴展Class A且僅使用Class A的用法。 – 2010-10-28 19:41:43

1

創建具有不同名稱的主界面類的副本。從這些新的界面/類實現/擴展。然後使用Ctrl + Shift + G搜索您的方法的參考。

面對同樣的情況,爲我工作。

14

讓你的等於實現暫時拋出類Throwable:equals(Object obj) throws Throwable

當然這會給你一個編譯錯誤,因爲它與Objects.equals()不兼容,所以你也會在所有使用你的equals方法的類中得到一個編譯錯誤(至少所有的類沒有處理/扔拋出自己):

未處理的異常Throwable類型

+0

偷偷摸摸!我喜歡。 – 2013-11-29 13:45:03

+0

天才!這是真正的答案。 (它不能檢測到所有的用途,如MeBigFatGuy [指出](http://stackoverflow.com/a/4061765/822870),但它是一樣好) – 2016-08-11 15:26:45

相關問題