Java中 对象克隆实例
来源:互联网 发布:网络公益联盟 编辑:程序博客网 时间:2024/06/05 04:18
import java.util.*;public class CloneTest { public static void main(String[] args) { // TODO Auto-generated method stub try { Employee original = new Employee("John Q,publi c", 5000); original.setHireDay(2000, 1, 1); Employee copy = original.clone(); copy.raiseSalary(10); copy.setHireDay(2002, 12, 31); System.out.println("original=" + original); System.out.println("copy+" + copy); } catch (CloneNotSupportedException e) { e.printStackTrace(); } }}//Cloneable 仅作为 clone 接口的标记,表明类设计者知道要进行克隆处理//标记接口class Employee implements Cloneable{ public Employee(String n, double s) { name = n; salary = s; hireDay = new Date(); } public Employee clone() throws CloneNotSupportedException { //使用Object.clone方法时如果对象中的所有数据域都属于数值类型和基本类型,则所有拷贝没问题 //但如果在对象中包含了子对象的引用,拷贝结果会使得两个域引用同一个子对象,因此原始对象和克隆对象共享这些信息 Employee cloned = (Employee) super.clone(); //为了实现深拷贝,鼻血克隆所有肯变的实例域 cloned.hireDay = (Date) hireDay.clone(); return cloned; } public void setHireDay(int year, int month, int day) { Date newHireDay = new GregorianCalendar(year, month - 1, day).getTime(); hireDay.setTime(newHireDay.getTime()); } public void raiseSalary(double byPercent) { double raise = salary * byPercent / 100; salary += raise; } public String toString() { return "Employee[name=" + name + ",salary=" + salary + ",hireDay=" + hireDay + "]"; } private String name; private double salary; private Date hireDay;}
public interface Cloneable此类实现了 Cloneable 接口,以指示 Object.clone() 方法可以合法地对该类实例进行按字段复制。
如果在没有实现 Cloneable 接口的实例上调用 Object 的 clone 方法,则会导致抛出 CloneNotSupportedException 异常
0 0
- Java中 对象克隆实例
- java 中克隆对象
- Java中对象的克隆
- java中对象的克隆
- Java中对象的深克隆和浅克隆
- Java中对象的深克隆和浅克隆介绍
- java中对象的拷贝(克隆)
- java克隆对象
- java中的对象克隆
- 浅谈java 对象克隆
- java对象的克隆
- java对象克隆clone
- java 对象 克隆 clone
- Java clone()克隆对象
- java对象的克隆
- JAVA 对象克隆clone
- java对象的克隆
- java 对象的克隆
- Linux开启ftp服务
- UFT相关小问题
- 笔试面试最常涉及到的12种排序算法(包括插入排序、二分插入排序、希尔排序、选择排序、冒泡排序、鸡尾酒排序、快速排序、堆排序、归并排序、桶排序、计数排序和基数排序)进行了详解。每一种算法都有基本介绍、算
- Codeforces 594A - Warrior and Archer (思维)
- ps快捷键对应的英文字母缩写
- Java中 对象克隆实例
- [NOIP2015]推销员
- HDOJ 1075 What are you talking about ? 字典树
- 2015年大二上-数据结构-栈(5)- 后缀表达式
- STS怎么创建一个springMVC的Maven项目
- linux 修改 机器名 root@localhost
- Hibernate检索方式的学习2015-11-14
- Understanding glibc malloc
- VM虚拟机快速安装LAMP后的配置