使用Wrapper类比较compareTo方法时(例如Long或Integer)
if(!this.getAttribute().compareTo(myobj.getAttribute()))
{
//changeLog to log the changes done from this object to myobj
}
在上述条件下,我想创建changeLog字符串,但有几个条件:
1.this.getAttribute() can be null.
2.myobj.getAttribute() can be null.
3.Both this.getAttribute() and myobj.getAttribute() can be null.
如果是null,我想在changeLog字符串中附加空字符串。它也应该处理空检查。
答案 0 :(得分:0)
在null
条件中添加if
项检查。条件从左到右进行评估。如果和(&&
)的左侧失败,则不会执行右侧。因此,如果您订购支票并且首先进行NullPointerException
检查,则不会遇到!= null
。
if(this.getAttribute() != null &&
myobj.getAttribute() != null &&
!this.getAttribute().compareTo(myobj.getAttribute())){
//changeLog to log the changes done from this object to myobj
}
答案 1 :(得分:0)
Java用?.
符号调整了一段时间(null
传播),但它从未被采用过。可能因为它可能破坏了语言。您需要自己检查null
。但是,像C和C ++ 这样的Java 已经缩短了if
s(与VBA不同),所以编码null
- 安全代码很简单,如果单调乏味。
答案 2 :(得分:0)
我不确定我是否理解你这就是我要做的事情
if(this.getAttribute() == null) {
if(myobj.getAttribute() != null) {
System.out.println(MessageFormat.format("Attribute was changed to {0} from null",myobj.getAttribute()));
}
} else {
if(myobj.getAttribute() == null) {
System.out.println("Attribute was changed to null",myobj.getAttribute());
} else if (!myObject.getAttribute().equals(this.getAttribute())) {
System.out.println("Attribute was changed to {0} from {1}",myobj.getAttribute(), this.getAttribute());
}
}
答案 3 :(得分:0)
我不确定你在这个问题上的动机。
如果您正在寻找支持compareToNullSupported
值的null
这样的简单方法。然后我没有任何建议,根据我的经验,我对这种功能的存在没有任何了解。
现在,如果您需要多次验证,请创建自定义compareTo
功能。我不建议覆盖compareTo
函数,因为它只会使代码更复杂。而是创建一个简单的函数,并在需要时调用它。
public int compareTo(Object obj1, Object obj2) {
if(obj1 == null || obj2 == null)
return 0;
else
return obj1.compareTo(obj2);
}
}