布尔等于方法

时间:2017-12-05 17:38:17

标签: java

编写一个抽象类项目。抽象类是父类,包含equals方法。我的项目的一部分是创建一个布尔等于方法,比较3个子类的客户端ID(长),以确保它们不是任何重复ID。有一个实现代码的问题。以下是我到目前为止的内容

public static boolean equals(Object A, Object B, Object C) { 
    if(A.equals(B) || A.equals(C) || B.equals(C)) 
        return true; 
    else 
        return false;
}

需要帮助将客户端ID的3个类值放入代码中,然后将代码合并到toString()方法中。

2 个答案:

答案 0 :(得分:1)

您可以将方法更改为以下内容:

public static boolean equals(Object A, Object B, Object C) {
    return A != null && B != null && C != null && (A.equals(B) || A.equals(C) || B.equals(C));
}

少数事情:

  1. 您拥有的任何地方:

    if (cond) {
        return true;
    } else {
        return false;
    } 
    

    您只需返回condreturn cond;

  2. 即可
  3. 添加了非空验证:A != null && B != null && C != null
  4. 您应该在每个类(equals()AB)上覆盖C方法,并在equals中包含您要使用的字段(仅限id你的例子)

答案 1 :(得分:1)

我没有得到你想要的东西,但我会小心翼翼:

static class Client {
    private long id;

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (getClass() != obj.getClass()) return false;
        Client oth = (Client) obj;
        return oth.id == this.id;
    }

    Client(long id) {
        this.id = id;
    }
}

public static boolean equals(Object A, Object B, Object C) {
    return A.equals(B) || A.equals(C) || B.equals(C);
}

public static void main(String[] args) {
    Object c1 = new Client(4);
    Object c2 = new Client(3);
    Object c3 = new Client(2);

    equals(c1, c2, c3);
}