Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中浅拷贝检查的通用实用程序_Java - Fatal编程技术网

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

Java中是否有一个通用实用程序来检查浅拷贝的相等性?在给定的示例中,如何验证浅层副本,而不用推出我自己的equals()实现

如果在核心java中不可用,则向第三方库开放。

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