zoukankan      html  css  js  c++  java
  • Java深拷贝与浅拷贝

      深拷贝与浅拷贝主要的不同是对于引用变量的拷贝,浅拷贝的引用变量不仅仅是拷贝一个引用(地址).引用变量的成员也一样深拷贝。废话少说下面是两个拷贝的例子

    1.浅拷贝

     1 package com.LightCopy;
     2 
     3 public class Professor implements Cloneable{
     4     private String name;
     5     private int age;
     6 
     7     public String getName() {
     8         return name;
     9     }
    10 
    11     public void setName(String name) {
    12         this.name = name;
    13     }
    14 
    15     public int getAge() {
    16         return age;
    17     }
    18 
    19     public void setAge(int age) {
    20         this.age = age;
    21     }
    22 
    23     public Professor(String name, int age) {
    24         this.name = name;
    25         this.age = age;
    26     }
    27     
    28     @Override
    29     public Object clone()  {
    30          Professor o=null;    
    31             try    
    32              {    
    33                  o=(Professor) super.clone();    
    34              }    
    35             catch(CloneNotSupportedException e)    
    36              {    
    37                  e.printStackTrace();
    38              }  
    39             
    40             return o;    
    41          }    
    42     
    43 }
    View Code

    2.深拷贝

     1 package com.DeepCopy;
     2 
     3 import com.LightCopy.Professor;
     4 
     5 public class Student implements Cloneable {
     6     private String name;
     7     private int age;
     8     private Professor pro;
     9     public Professor getPro() {
    10         return pro;
    11     }
    12 
    13     public void setPro(Professor pro) {
    14         this.pro = pro;
    15     }
    16 
    17     public Student(String name, int age,Professor pro) {
    18         this.name = name;
    19         this.age = age;
    20         this.pro=pro;
    21     }
    22 
    23     public String getName() {
    24         return name;
    25     }
    26 
    27     public void setName(String name) {
    28         this.name = name;
    29     }
    30 
    31     public int getAge() {
    32         return age;
    33     }
    34 
    35     public void setAge(int age) {
    36         this.age = age;
    37     }
    38 
    39     @Override
    40     public Object clone() {
    41         Student obj = null;
    42         try {
    43             obj = (Student) super.clone();
    44         } catch (CloneNotSupportedException ex) {
    45             ex.printStackTrace();
    46         }
    47         obj.pro=(Professor)pro.clone();
    48         return obj;
    49     }
    50 }
    View Code
  • 相关阅读:
    kubernetes
    dubbo
    前端控件+资源
    Gossip
    问题解决1
    react
    impala
    storm+Calcite
    ASP.NET页面传值与跳转
    经典FormsAuthenticationTicket 分析
  • 原文地址:https://www.cnblogs.com/sandynie/p/3137163.html
Copyright © 2011-2022 走看看