我在使用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);
}
}
现在,我可以在下面的代码片段中用等号替换等号,因为我指的是同一个对象或者它是错的吗?
....
private bool method(){
A aInstance = getAInstance();
int param = Math.Random();
return aInstance.method(param).equals(A.STATIC_FIELD);
}
....
如果从枚举中获取值中的STATIC_FIELD怎么办?
解决方法:
这取决于你想做什么.
如果需要检查这是否完全相同,请使用直接比较.如果您需要检查对象是否包含相同的内容(如字符串或数字),则应使用.equals.
这些方法的最常见错误似乎来自字符串比较,其中.equals如果字符串具有相同的内容则返回true但= =如果这是相同的字符串实例,则返回true.