网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  java关于克隆与“冷藏”和“解冻”方法     
  文章作者:未知  文章来源:赛迪网技术社区  
  查看:66次  录入:管理员--2007-11-16  
 

import java.awt.point;
import java.io.ioexception;

import com.sun.corba.se.impl.io.optionaldataexception;

/**
 * 克隆测试<br>
 * 以方形类为例,比较了深克隆(deep clone)与浅克隆(shallow clone)的异同
 * 
 * @see #clone()
 * @author 88250
 * @version 1.0.0, 2007-8-26
 */
public class clonetester
{
    private square square = new square();

    private square cpysquare = null;

    /**
     * 浅克隆操作
     */
    public void shallowclone()
    {
    square.setsidelength(2);
    square.setlocation(new point(2, 5));
    // 浅克隆
    cpysquare = (square) square.clone();

    }

    /**
     * 深克隆操作
     */
    public void deepclone()
    {
    square.setsidelength(3);
    square.setlocation(new point(1, 3));
    // 深克隆
    try
    {
        cpysquare = (square) square.deepclone();
    }
    catch (optionaldataexception e)
    {
        e.printstacktrace();
    }
    catch (ioexception e)
    {
        e.printstacktrace();
    }
    catch (classnotfoundexception e)
    {
        e.printstacktrace();
    }
    }

    /**
     * 克隆结果输出
     */
    public void clonedisplay()
    {

    system.out.println("原始方形长度:" + square.getsidelength());
    system.out.println("克隆方形长度:" + cpysquare.getsidelength());

    system.out.println("原始方形==克隆方形?" + (square == cpysquare));

    system.out.println("原始方形的位置==克隆方形的位置?"
        + (square.getlocation() == cpysquare.getlocation()));
    }

    public static void main(string[] args)
    {
    clonetester sm = new clonetester();
    sm.shallowclone();
    sm.clonedisplay();

    sm.deepclone();
    sm.clonedisplay();
    }
}

import java.awt.point;
import java.io.bytearrayinputstream;
import java.io.bytearrayoutputstream;
import java.io.ioexception;
import java.io.objectinputstream;
import java.io.objectoutputstream;
import java.io.serializable;

import com.sun.corba.se.impl.io.optionaldataexception;

/**
 * 正方形
 * 
 * @author 88250
 * @version 1.0.0, 2007-8-26
 */
public class square implements cloneable, serializable
{
    private point location = new point(0, 0);

    private float sidelength = 1f;

    @override
    public object clone()
    {
    square tmp = null;
    try
    {
        tmp = (square) super.clone();
    }
    catch (clonenotsupportedexception cnse)
    {
        cnse.printstacktrace();
    }
    finally
    {
        return tmp;
    }
    }
    
    /**
     * 深克隆方法
     * @return
     */
    public object deepclone()
    throws ioexception, optionaldataexception, classnotfoundexception
    {
    // 首先将对象写到流里
    bytearrayoutputstream bo = new bytearrayoutputstream();
    objectoutputstream oo = new objectoutputstream(bo);
    oo.writeobject(this);
    
    // 然后将对象从流里读出来
    bytearrayinputstream bi = new bytearrayinputstream(bo.tobytearray());
    objectinputstream oi = new objectinputstream(bi);
    
    return (oi.readobject());
    }

    /**
     * @return the location
     */
    public point getlocation()
    {
        return location;
    }

    /**
     * @param location the location to set
     */
    public void setlocation(point location)
    {
        this.location = location;
    }

    /**
     * @return the sidelength
     */
    public float getsidelength()
    {
        return sidelength;
    }

    /**
     * @param sidelength the sidelength to set
     */
    public void setsidelength(float sidelength)
    {
        this.sidelength = sidelength;
    }

}

 
 
上一篇: 正确的解决用户退出问题?djsp和struts    下一篇: 利用jmx来部署基于websphere的j2ee应用
  相关文档
如何使用java布局器? 11-17
java基础:jsp中九个隐含对象的详细解析 11-22
javascript 函数原型 11-17
设计模式:广告管理系统的uml分析与设计 01-31
borland新一代java开发环境jbuilderx 11-17
关于2006的技术预言 11-17
kodo ejb:实现类和类之间的关联关系 11-16
line 属性 11-16
hacking swing: 一个jdbc表控件模型 11-17
java如何共享资源 11-17
eclipse中集成ant实现快速开发 11-16
javai/o包中的decorator模式介绍 11-16
.net应用程序的授权模型使系统更易管理 11-17
for 语句 11-16
turbine howto 之 service 11-17
jboss技术支持文档(一) 11-17
改写clone的时候要小心 11-17
java中的sizeof(二) 11-17
如何正确利用 j2ee 的各种工具 11-17
java基础:jsp中监测jvm的内存使用情况 02-29
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息