Comparing two objects, either of which could be null
我在一个类中有一个函数,它将自己与同一个类的另一个实例进行比较,找出哪些变量不同。这是为了减少主数据库的网络负载(只上载需要上载的数据,而不是上载整个对象)。
为此,我一直在尝试使用
我很快发现
因此,我的坏代码示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public class MyObject { String myString; String myString2; public String getChangedVars(MyObject comparisonObj) { ArrayList<String> changedVars = new ArrayList<String>(); if (!this.myString.equals(comparisonObj.myString)) changedVars.add("myString"); if (!this.myString2.equals(comparisonObj.myString2)) changedVars.add("myString2"); return changedVars.toString(); } } |
我的问题是-基于所比较的变量中的任何一个可能为空,在避免使用
编辑:首先检查两个对象的空值并不能很好地工作,因为我仍然想比较对象是否有引用。例如,如果一个项目是
自从1.7是
This class consists of static utility methods for operating on
objects. These utilities include null-safe or null-tolerant methods
for computing the hash code of an object, returning a string for an
object, and comparing two objects.
你可以使用
BLCK1/
1 | if(Objects.equals(myString,myString2)){...} |
你可以使用Apache Object Upills
回到布尔昂
This method has been replaced by Java.util.objects.equals(object,object)in Java 7
APACHE提供的使用弦乐
ZZU1
1 2 3 4 | if (this.myString != null && this.myString.equals(comparisonObj.myString)) { changedVars.add("myString"); } |