2015-05-06 38 views
0

我現在使用eclipse編寫我的Java程序,但我需要覆蓋equals方法,因此它將採用實際數據而不是名稱或標識。當我嘗試按照我所知的方式自動生成它時,它說我沒有非靜態變量。我添加了一些,但仍然無效。我對Java自己不太瞭解,但是我知道我很可能明白你在說什麼。 (我不是我的代碼做了,我剛開始的整數xy只是嘗試,使其工作。)無法使用eclipse自動生成等值方法

package mainPackage; 
import java.util.*; 

public class Main extends Creater { 
    public static void main(String[] args) { 
     int x = 0; 
     int y = 0; 
     thatInput = Inputs.ask(); 
     Loops.CreateArray(); 
    } 
} 

回答

-1

自動添加equalshashCode方法:

  1. 菜單 - >來源 - >生成hashCode()和equals()方法
  2. 選擇您想要做的hashCode()和equals()的一部分領域
  3. 點擊Ok

其餘的將通過日食完成。

+1

OP說他知道如何自動生成這些方法......問題不在於如何去做,而是因爲他沒有任何基於這些方法的變量。 –

0

消息,你有「沒有非靜態變量」給你正確的提示。覆蓋hashCodeequals方法只有在類中存在非靜態變量時纔有意義。所以,如果你改變了你的例子,下面,你可以實現這些方法(或讓他們自動生成的日食爲你):

public class Main extends Creater { 
    private int x = 0; 
    private int y = 0; 

    public static void main(String[] args) { 
     // other code 
    } 

    @Override 
    public boolean equals(Object obj) { 
     // ... your equals code goes here 
    } 

    @Override 
    public int hashCode() { 
     // ... your hashCode, er, code goes here 
    } 

    // ... other code that does wonderful things with x and y 
} 

注意如何我搬到你的xy變量是在而不是在你所擁有的方法級別。另請注意,別人誰或東西創建創造者,不是創世,我不會建議命名你包mainPackage,而且我也不會去的每一個類進口java.util.*只爲爲了它(如果你使用的是日食,只需做Ctrl + Shift + O來組織你的導入)。請參閱which issues to consider when overriding these methods

+0

請問最低選民請解釋他們認爲我的答案錯了...? –

+0

當某人無事可做,或者因生活中的其他事情而感到不安時,或者當他們希望左鍵點擊會擁有如此大的力量時,他們只是開始對SOF進行投票,大多數時候這些倒票都沒有意義。 – paul