Java中浅拷贝检查的通用实用程序
Java中是否有一个通用实用程序来检查浅拷贝的相等性?在给定的示例中,如何验证浅层副本,而不用推出我自己的equals()实现 如果在核心java中不可用,则向第三方库开放。Java中浅拷贝检查的通用实用程序,java,Java,Java中是否有一个通用实用程序来检查浅拷贝的相等性?在给定的示例中,如何验证浅层副本,而不用推出我自己的equals()实现 如果在核心java中不可用,则向第三方库开放。EqualsBuilder(Apache Commons Lang API)->Gradle:组:'org.Apache.Commons',名称:'Commons-lang3',版本:'3.9' public static class CloneableObject implements Cloneable, Seriali
EqualsBuilder(Apache Commons Lang API)
->Gradle:组:'org.Apache.Commons',名称:'Commons-lang3',版本:'3.9'
public static class CloneableObject implements Cloneable, Serializable {
@Override
public CloneableObject clone() throws CloneNotSupportedException {
return (CloneableObject) super.clone();
}
}
System.out.println(EqualsBuilder.reflectionEquals(b, b.clone(), true)); // true
您可以使用Kotlin数据类或Lombok注释。或者可以使用基于反射的Commons Lang EqualBuilder:您可以使用
EqualBuilder(Apache Commons Lang 3.9 API)
->EqualBuilder.reflectionEquals(b,b.clone(),true)>>true
,但是,使用类似的方法有点设计味道。谢谢@Thilo,现在我可以用了。为什么你会说这是一种设计的味道呢?谢谢@kozmo。有什么东西可以用来比较同一行的深层拷贝吗?我看到SerializationUtils.clone()可能也允许深度复制。要进行深度比较,请使用reflectionEquals
上的testRecursive
选项。
public static class CloneableObject implements Cloneable, Serializable {
@Override
public CloneableObject clone() throws CloneNotSupportedException {
return (CloneableObject) super.clone();
}
}
System.out.println(EqualsBuilder.reflectionEquals(b, b.clone(), true)); // true