在java中..如果我们必须将一个对象与另一个对象进行比较。我们比较该对象中的每个字段。
Student1对象具有marks1,marks2,marks3,name,age作为字段。 Student2对象具有marks1,marks2,marks3,name,age作为字段。 因此,要检查2名学生是否相等...我们比较每个领域。
if(Student1.marks1 == Student2.marks1 &&
Student1.marks2 == Student2.marks2 &&
Student1.marks3 == Student2.marks3 &&
Student1.name == Student2.name &&
Student1.age == Student2.age)
{
// we say that Students are same
}
但是如果Student对象有很多字段怎么办? Student1对象有这样的100个这样的字段,包括marks1,marks2,marks3,name,age,address,color,class,country,section,x,y,z Student2对象有mark1,marks2,marks3,name,age,address,color,class,country,section,x,y,z这样的100个这样的字段
那么我们现在应该如何检查2个对象是否相等..? 采用上述方法...检查每个单独的字段是没有意义的,因为它们是100个这样的字段。
有人告诉我这可以通过java中的序列化完成。任何人都可以告诉我们如何处理它或其他任何方式?
答案 0 :(得分:2)
如果您使用的是IDE(如Eclipse),那么您无需担心。
对于Eclipse:
这将自动创建您所需的等于方法。
答案 1 :(得分:1)
如果您愿意使用外部库,Apache公共中有一个工具可以帮助您使用反射实现equals()
方法。它被称为EqualsBuilder:
样本用法:
public boolean equals(Object obj) {
return EqualsBuilder.reflectionEquals(this, obj);
}
答案 2 :(得分:0)
我认为你需要了解平等实际意味着什么
如果你的意思是两个对象相等(即使它们指向不同的内存位置),当它们的所有字段(相等)时,你必须比较所有字段。无论您是手动执行还是IDE为您或第三方库执行此操作,这都是不同的事情
如果你的意思是两个对象只有在指向相同的内存位置时才相等,那么你可以进行==
比较
答案 3 :(得分:0)
您应该使用equals()
来比较字符串,但最重要的是,您应该只使用IDE中的generate equals() and hashCode()
函数,看看它为您生成了什么。这是一个有效,简单且简单的解决方案