Java Clone(类的复制)实例代码

自己实现了一遍:

代码如下:

public class A implements Cloneable {
public String str[];

A() {
str = new String[2];
}

public Object clone() {
A o = null;
try {
o = (A) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
o.str = new String[2];
return o;
}
}

void run() throws Exception {
A a1 = new A(), a2 = new A();
a1.str[0] = "a"; a1.str[1] = "b";
a2 = (A) a1.clone();
a2.str[0] = "c"; a2.str[1] = "d";
System.out.println(a1.str[0] + " " + a2.str[0]);
}

结果:

a c

1.

代码如下:

public class A implements Cloneable {
 public String name;

public Object clone() {
  A o = null;
  try {
   o = (A) super.clone();
  } catch (CloneNotSupportedException e) {
   e.printStackTrace();
  }
  return o;
 }
}

2.

代码如下:

public class A implements Cloneable {
 public String name[];

public A(){
  name=new String[2];
 }

public Object clone() {
  A o = null;
  try {
   o = (A) super.clone();
  } catch (CloneNotSupportedException e) {
   e.printStackTrace();
  }
  return o;
 }
}

3.

代码如下:

public class A implements Cloneable {   
     public String name[];   
     public Vector<B> claB;

public A(){   
         name=new String[2];   
         claB=new Vector<B>();   
     }

public Object clone() {   
         A o = null;   
         try {   
             o = (A) super.clone();   
         } catch (CloneNotSupportedException e) {   
             e.printStackTrace();   
         }   
         o.name=new String[2];//深度clone   
         o.claB=new Vector<B>();//将clone进行到底   
         for(int i=0;i<claB.size();i++){   
             B temp=(B)claB.get(i).clone();//当然Class B也要实现相应clone方法
             o.claB.add(temp);   
         }   
         return o;   
     }   
 }

(0)

相关推荐

  • Java clone方法详解及简单实例

      Java clone方法详解 什么是"clone"? 在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能 会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说,A与B是两个独立的对象,但B的初始值是由A对象确定的.在 Java语言中,用简单的赋值语句是不能满足这种需求的.要满足这种需求虽然有很多途径,但实现clone()方法是其中最简单,也是最高效的手段. Java的所有类都默认继承java.lang.

  • Java利用序列化实现对象深度clone的方法

    本文实例讲述了Java利用序列化实现对象深度clone的方法.分享给大家供大家参考.具体实现方法如下: ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(byteOut); out.writeObject(obj); ByteArrayInputStream byteIn = new ByteArrayInputStream(by

  • java object 之clone方法全面解析

    1 protected native Object clone() throws CloneNotSupportedException; 1.方法由native关键字修饰 java中的native关键字表示这个方法是个本地方法,[java native说明].而且native修饰的方法执行效率比非native修饰的高. 2.方法由protected修饰 一个类在覆盖clone()方法时候,需要修改成public访问修饰符,这样才能保证其他所有的类都能够访问这个类的这个方法. 3.方法抛出Clon

  • Java Clone(类的复制)实例代码

    自己实现了一遍: 复制代码 代码如下: public class A implements Cloneable {public String str[]; A() {str = new String[2];} public Object clone() {A o = null;try {o = (A) super.clone();} catch (CloneNotSupportedException e) {e.printStackTrace();}o.str = new String[2];r

  • Java文件快速copy复制实例代码

    前言 最近学习netty的时候发现nio包下有个FileChannel类,经过了解这个类作用是个专门负责传输文件的通道,支持多线程,而且经过反复多次测试FileChannel复制文件的速度比BufferedInputStream/BufferedOutputStream复制文件的速度快了近三分之一.在复制大文件的时候更加体现出FileChannel的速度优势.而且FileChannel是多并发线程安全的.代码也比较简洁 代码贴下 package com.niu.nio; import java.

  • Java实现FTP服务器功能实例代码

    FTP(File Transfer Protocol 文件传输协议)是Internet 上用来传送文件的协议.在Internet上通过FTP 服务器可以进行文件的上传(Upload)或下载(Download).FTP是实时联机服务,在使用它之前必须是具有该服务的一个用户(用户名和口令),工作时客户端必须先登录到作为服务器一方的计算机上,用户登录后可以进行文件搜索和文件传送等有关操作,如改变当前工作目录.列文件目录.设置传输参数及传送文件等.使用FTP可以传送所有类型的文件,如文本文件.二进制可执

  • Java执行hadoop的基本操作实例代码

    Java执行hadoop的基本操作实例代码 向HDFS上传本地文件 public static void uploadInputFile(String localFile) throws IOException{ Configuration conf = new Configuration(); String hdfsPath = "hdfs://localhost:9000/"; String hdfsInput = "hdfs://localhost:9000/user/

  • java List 排序之冒泡排序实例代码

    java List 排序之冒泡排序实例代码 List排序,这里介绍两种排序: 1.Collections.sort()排序: 假如List集合中放的是Menu对象. public class Menu{ private int id; private String name; private int seq;//自定义排序字段 //构造函数.getter.setter省略....... } List<Menu> menus=new ArrayList<Menu>(); menus.

  • java中的 toString()方法实例代码

    前言: toString()方法 相信大家都用到过,一般用于以字符串的形式返回对象的相关数据. 最近项目中需要对一个ArrayList<ArrayList<Integer>> datas  形式的集合处理. 处理要求把集合数据转换成字符串形式,格式为 :子集合1数据+"#"+子集合2数据+"#"+....+子集合n数据. 举例: 集合数据 :[[1,2,3],[2,3,5]]  要求转成为 "[1,2,3]#[2,3,5]"

  • Java构建树形菜单的实例代码(支持多级菜单)

    效果图:支持多级菜单. 菜单实体类: public class Menu { // 菜单id private String id; // 菜单名称 private String name; // 父菜单id private String parentId; // 菜单url private String url; // 菜单图标 private String icon; // 菜单顺序 private int order; // 子菜单 private List<Menu> children;

  • java 实现输出随机图片实例代码

    java  实现输出随机图片实例代码 输出随机图片(CAPTCHA图像):Completely Automated Public Turing Test to Tell Computers and Humans Apart (全自动区分计算机和人类的测试) 相关主要类(JDK 查看API) BufferedImage:内存图像 Graphics:画笔 ImageIO:输出图像 放在html页面上<img src/> 注意:浏览器默认会缓存图片 public static int WIDTH =

  • JAVA用户自定义事件监听实例代码

    JAVA用户自定义事件监听实例代码 很多介绍用户自定义事件都没有例子,或是例子不全,下面写了一个完整的例子,并写入了注释以便参考,完整的实例源代码如下: package demo; import Java.util.EventObject; /** * Title: 事件处理类,继承了事件基类 * Description: * Copyright: Copyright (c) 2005 * Company: cuijiang * @author not attributable * @versi

  • java 基本算法之归并排序实例代码

    java 基本算法之归并排序实例代码 原理:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表, * 即把待排序序列分为若干个子序列,每个子序列是有序的.      * 然后再把有序子序列合并为整体有序序列. 实例代码: public class MergeSort { /** * * * * @param args */ public static void main(String[] args) { int a[] = { 49, 38, 65, 97, 76, 13,

随机推荐