簡體   English   中英

無法使用Eclipse自動生成equals方法

[英]Can't auto-generate an equals method with eclipse

我現在使用eclipse編寫Java程序,但是我需要重寫equals方法,這樣它將使用實際數據,而不是名稱或id。 當我嘗試以自己知道的方式自動生成它時,它表示我沒有非靜態變量。 我添加了一些,但仍然無法正常工作。 我對Java不夠了解,無法自己做,但我了解得最多,我很可能會理解您在說什么。 (我還沒有完成我的代碼,我才剛開始。整數xy只是試圖使其工作。)

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();
    }
}

消息“沒有非靜態變量”正在為您提供正確的提示。 僅當類中包含非靜態變量時,才重寫hashCodeequals方法才有意義。 因此,如果將示例更改為以下示例,則可以實現這些方法(或通過Eclipse為您自動生成它們):

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.*在每個班只為求(如果您使用的是eclipse,則只需按Ctrl + Shift + O即可組織導入)。

另請參見覆蓋這些方法時要考慮的問題

自動添加equalshashCode方法:

  1. 菜單->源->生成hashCode()和equals()
  2. 選擇要成為hashCode()和equals()一部分的字段
  3. 點擊確定

其余的將通過蝕來完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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