无法使用eclipse自动生成equals方法

时间:2015-05-06 05:23:39

标签: java eclipse equals

我现在正在使用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();
    }
}

2 个答案:

答案 0 :(得分:0)

您拥有“没有非静态变量”的消息正在为您提供正确的提示。如果类中存在非静态变量,则仅覆盖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变量移动到类级别而不是您拥有它们的方法级别。另请注意,某人创建的人是创建者,而不是创建者,我不建议命名您的包{{ 1}},并且我不会为了它而在每个类中导入mainPackage(如果你正在使用eclipse,只需要执行 Ctrl + Shift < / kbd> + O 来组织你的导入。)

另请参阅which issues to consider when overriding these methods

答案 1 :(得分:-1)

要自动添加x="CuIn2Se" print re.findall(r"(?:C|In|S|Cu|Se)(?=[A-Z0-9]|$|\s)",x) equals方法:

  1. 菜单 - &gt;来源 - &gt;生成hashCode()和equals()
  2. 选择您想要成为hashCode()和equals()
  3. 的一部分的字段
  4. 点击确定
  5. 其余的将由eclipse完成。