{"id":19660,"date":"2024-03-15T19:16:44","date_gmt":"2024-03-15T19:16:44","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-to-implement-deep-copy-and-shallow-copy-in-java\/"},"modified":"2024-03-21T16:13:58","modified_gmt":"2024-03-21T16:13:58","slug":"how-to-implement-deep-copy-and-shallow-copy-in-java","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-to-implement-deep-copy-and-shallow-copy-in-java\/","title":{"rendered":"How to implement deep copy and shallow copy in Java?"},"content":{"rendered":"<p>The implementation methods for deep copy and shallow copy in Java are as follows:<\/p>\n<ol>\n<li>Item<\/li>\n<li>create an identical copy<\/li>\n<li>Capable of being cloned<\/li>\n<li>create a copy<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title class_\">MyClass<\/span> <span class=\"hljs-keyword\">implements<\/span> <span class=\"hljs-title class_\">Cloneable<\/span> {\r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-type\">int<\/span> value;\r\n    <span class=\"hljs-keyword\">private<\/span> List&lt;String&gt; list;\r\n\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-title function_\">MyClass<\/span><span class=\"hljs-params\">(<span class=\"hljs-type\">int<\/span> value, List&lt;String&gt; list)<\/span> {\r\n        <span class=\"hljs-built_in\">this<\/span>.value = value;\r\n        <span class=\"hljs-built_in\">this<\/span>.list = list;\r\n    }\r\n\r\n    <span class=\"hljs-meta\">@Override<\/span>\r\n    <span class=\"hljs-keyword\">protected<\/span> Object <span class=\"hljs-title function_\">clone<\/span><span class=\"hljs-params\">()<\/span> <span class=\"hljs-keyword\">throws<\/span> CloneNotSupportedException {\r\n        <span class=\"hljs-type\">MyClass<\/span> <span class=\"hljs-variable\">clone<\/span> <span class=\"hljs-operator\">=<\/span> (MyClass) <span class=\"hljs-built_in\">super<\/span>.clone();\r\n        clone.list = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">ArrayList<\/span>&lt;&gt;(list);\r\n        <span class=\"hljs-keyword\">return<\/span> clone;\r\n    }\r\n}\r\n<\/code><\/pre>\n<ol>\n<li>Deep copy: A deep copy refers to creating a new object and then copying the values of all fields of the original object to the new object, including reference type fields. Deep copy requires manually recursively copying reference type fields. Example code is as follows:<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title class_\">MyClass<\/span> {\r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-type\">int<\/span> value;\r\n    <span class=\"hljs-keyword\">private<\/span> List&lt;String&gt; list;\r\n\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-title function_\">MyClass<\/span><span class=\"hljs-params\">(<span class=\"hljs-type\">int<\/span> value, List&lt;String&gt; list)<\/span> {\r\n        <span class=\"hljs-built_in\">this<\/span>.value = value;\r\n        <span class=\"hljs-built_in\">this<\/span>.list = list;\r\n    }\r\n\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-title function_\">MyClass<\/span><span class=\"hljs-params\">(MyClass other)<\/span> {\r\n        <span class=\"hljs-built_in\">this<\/span>.value = other.value;\r\n        <span class=\"hljs-built_in\">this<\/span>.list = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">ArrayList<\/span>&lt;&gt;(other.list);\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>The above are two common ways to implement deep copy and shallow copy, choose the appropriate method based on specific needs and scenarios.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The implementation methods for deep copy and shallow copy in Java are as follows: Item create an identical copy Capable of being cloned create a copy public class MyClass implements Cloneable { private int value; private List&lt;String&gt; list; public MyClass(int value, List&lt;String&gt; list) { this.value = value; this.list = list; } @Override protected Object clone() [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-19660","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to implement deep copy and shallow copy in Java? - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-to-implement-deep-copy-and-shallow-copy-in-java\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to implement deep copy and shallow copy in Java?\" \/>\n<meta property=\"og:description\" content=\"The implementation methods for deep copy and shallow copy in Java are as follows: Item create an identical copy Capable of being cloned create a copy public class MyClass implements Cloneable { private int value; private List&lt;String&gt; list; public MyClass(int value, List&lt;String&gt; list) { this.value = value; this.list = list; } @Override protected Object clone() [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-to-implement-deep-copy-and-shallow-copy-in-java\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-15T19:16:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-21T16:13:58+00:00\" \/>\n<meta name=\"author\" content=\"Isabella Edwards\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Isabella Edwards\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-deep-copy-and-shallow-copy-in-java\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-deep-copy-and-shallow-copy-in-java\/\"},\"author\":{\"name\":\"Isabella Edwards\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd\"},\"headline\":\"How to implement deep copy and shallow copy in Java?\",\"datePublished\":\"2024-03-15T19:16:44+00:00\",\"dateModified\":\"2024-03-21T16:13:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-deep-copy-and-shallow-copy-in-java\/\"},\"wordCount\":104,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-deep-copy-and-shallow-copy-in-java\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-deep-copy-and-shallow-copy-in-java\/\",\"name\":\"How to implement deep copy and shallow copy in Java? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-15T19:16:44+00:00\",\"dateModified\":\"2024-03-21T16:13:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-deep-copy-and-shallow-copy-in-java\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-to-implement-deep-copy-and-shallow-copy-in-java\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-deep-copy-and-shallow-copy-in-java\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to implement deep copy and shallow copy in Java?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd\",\"name\":\"Isabella Edwards\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g\",\"caption\":\"Isabella Edwards\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/isabellaedwards\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to implement deep copy and shallow copy in Java? - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/how-to-implement-deep-copy-and-shallow-copy-in-java\/","og_locale":"en_US","og_type":"article","og_title":"How to implement deep copy and shallow copy in Java?","og_description":"The implementation methods for deep copy and shallow copy in Java are as follows: Item create an identical copy Capable of being cloned create a copy public class MyClass implements Cloneable { private int value; private List&lt;String&gt; list; public MyClass(int value, List&lt;String&gt; list) { this.value = value; this.list = list; } @Override protected Object clone() [&hellip;]","og_url":"https:\/\/www.silicloud.com\/blog\/how-to-implement-deep-copy-and-shallow-copy-in-java\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-15T19:16:44+00:00","article_modified_time":"2024-03-21T16:13:58+00:00","author":"Isabella Edwards","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Isabella Edwards","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-to-implement-deep-copy-and-shallow-copy-in-java\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-implement-deep-copy-and-shallow-copy-in-java\/"},"author":{"name":"Isabella Edwards","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd"},"headline":"How to implement deep copy and shallow copy in Java?","datePublished":"2024-03-15T19:16:44+00:00","dateModified":"2024-03-21T16:13:58+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-implement-deep-copy-and-shallow-copy-in-java\/"},"wordCount":104,"commentCount":0,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-to-implement-deep-copy-and-shallow-copy-in-java\/","url":"https:\/\/www.silicloud.com\/blog\/how-to-implement-deep-copy-and-shallow-copy-in-java\/","name":"How to implement deep copy and shallow copy in Java? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-15T19:16:44+00:00","dateModified":"2024-03-21T16:13:58+00:00","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-implement-deep-copy-and-shallow-copy-in-java\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-to-implement-deep-copy-and-shallow-copy-in-java\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-to-implement-deep-copy-and-shallow-copy-in-java\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to implement deep copy and shallow copy in Java?"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd","name":"Isabella Edwards","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g","caption":"Isabella Edwards"},"url":"https:\/\/www.silicloud.com\/blog\/author\/isabellaedwards\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/19660","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=19660"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/19660\/revisions"}],"predecessor-version":[{"id":53413,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/19660\/revisions\/53413"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=19660"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=19660"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=19660"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}