比较最终静态字段时 == 或等于

Ste*_*TNT 5 java equals operators

在与C#稍作休息后,我又回到了Java并且我已经厌倦了编写类似的东西,所以我想知道是否有一种方法可以在不破坏我的程序的情况下使用运算符。a.equals(b)==

这是我的情况:

public static class A {
    public final static A STATIC_FIELD = new A(prop1, prop2);

    public A method(int param){
        return (param > 0.5) ? STATIC_FIELD : new A(prop1, prop2);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我可以在以下代码段中替换equals==,因为我指的是同一个对象还是错误?

....
private bool method(){
    A aInstance = getAInstance();
    int param = Math.Random();
    return aInstance.method(param).equals(A.STATIC_FIELD);
}
....
Run Code Online (Sandbox Code Playgroud)

如果STATIC_FIELD取自 an 的值enum怎么办?

Ste*_*e M 0

如果您不重写 equals() 方法equals()==执行相同的操作,请检查引用的相等性。在这种情况下您可以进行替换,因为 method() 在 A.STATIC_FIELD 为 true 时将返回与 A.STATIC_FIELD 相同的引用。看到这个答案