zoukankan      html  css  js  c++  java
  • 各种拷贝方法比较

    package com.yd.wmsc.copy;
    
    import java.util.*;
    
    public class TestCopy {
    public static void main(String[] args) throws CloneNotSupportedException {
        Name name = new Name("John", "Chen");  
        Person person = new Person(name, 28); 
        
        Person copyOfPerson = (Person)person.clone();  
         
        /*
        List<Object> srclst = new ArrayList<Object>();
        List<Object> destlst = new ArrayList<Object>();
        
        srclst.add(person);
        destlst.add(null);
        // copy into dest list
        Collections.copy(destlst, srclst); 
        System.out.println(destlst.size());
        Person copyOfPerson = (Person)destlst.get(0);*/
        
        
        name.setFirstName("Johnny");  
        name.setLastName("Qin");  
        person.setAge(29);  
        System.out.println(copyOfPerson.getName().getFirstName() + " " +  
                copyOfPerson.getName().getLastName() +   
                " " + copyOfPerson.getAge());
        //浅拷贝Johnny Qin 28
        //深拷贝John Chen 28
        //Collections.copy Johnny Qin 29
        
    }
    }
    package com.yd.wmsc.copy;
    
    public class Name implements Cloneable {
        private String firstName;
        private String lastName;
    
        public Name(String firstName, String lastName) {
            this.firstName = firstName;
            this.lastName = lastName;
    
        }
    
        public String getFirstName() {
            return firstName;
        }
    
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }
    
        public String getLastName() {
            return lastName;
        }
    
        public void setLastName(String lastName) {
            this.lastName = lastName;
        }
    
        public Object clone() throws CloneNotSupportedException {
            return super.clone();
        }
    }
    package com.yd.wmsc.copy;
    
    public class Person implements Cloneable {  
        private Name name;  
        private int age;  
      
        
        public Person(Name name,int age){
            this.name = name;
            this.age = age;
            
        }
        
        protected Object clone() throws CloneNotSupportedException {  
            //浅拷贝
            //return super.clone();
            //深拷贝
            Person person = (Person)super.clone();
            person.setName((Name)person.getName().clone());
            return person;
        }
    
        public Name getName() {
            return name;
        }
    
        public void setName(Name name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }  
    }  
  • 相关阅读:
    机器学习--强化学习
    机器学习--深度学习
    机器学习--维度灾难
    机器学习--最优化
    机器学习--降维
    机器学习--聚类
    机器学习--模型提升
    Git和gitHub用户名 邮箱
    Git线上操作
    版本控制器:Git
  • 原文地址:https://www.cnblogs.com/tonggc1668/p/6554887.html
Copyright © 2011-2022 走看看