Java蜘蛛人 欢迎大家

欢迎大家 来到我的blog , 如果我身边的朋友 有什么不懂可以直接来问我 我会细心的帮助你的. 如果网络上的朋友有什么不懂的 可以加我Java蜘蛛人 QQ48187537
posts - 54, comments - 192, trackbacks - 0, articles - 1
/*
 *实现序列化的克隆.
 *
 *
 *确切的说应该是对象的序列化,一般程序在运行时,产生对象,这些对象
随着程序的停止运行而消失,但如果我们想把某些对象(因为是对象,所以
有各自不同的特性)保存下来,在程序终止运行后,这些对象仍然存在,
可以在程序再次运行时读取这些对象的值,或者在其他程序中利用这些
保存下来的对象。这种情况下就要用到对象的序列化。
 *
 *
 *
 
*/

import java.util.*;
import java.io.*;
public class SerialCloneTest
{
    
public static void main (String[] args) 
    
{
        Employee  harry
=new Employee("Harry Hacke",3500,1989,10,1);
        
        Employee harry2
=(Employee)harry.clone();
        
        harry.lixi(
50);
        System.out.println (harry);
        System.out.println (harry2);
    }

}

class SerialCloneable implements Cloneable,Serializable
{
    
public Object clone()
    
{
        
try
        
{
            ByteArrayOutputStream bout
=new ByteArrayOutputStream();  
            ObjectOutputStream out
=new ObjectOutputStream(bout);
            out.writeObject(
this);
            out.close();
            
            ByteArrayInputStream bin
=new ByteArrayInputStream(bout.toByteArray());
            ObjectInputStream in
=new ObjectInputStream(bin);
            Object ret
=in.readObject();
            in.close();
            
return ret;
        }

        
catch(Exception e)
        
{
            e.printStackTrace();
            
return null;
        }

    }

}

class Employee extends SerialCloneable   //Employee 继承了SerialCloneable 就有他的克隆方法
{
    
private String name;
    
private double salary;
    
private Date hireDay;
    
public Employee(String n,double s,int year,int month,int day)
    
{
        name
=n;
        salary
=s;
        GregorianCalendar calendar
=new GregorianCalendar(year,month-1,day);
        hireDay
=calendar.getTime();
    }

    
public String getName()
    
{
        
return name;
    }

    
public double getSalary()
    
{
        
return salary;
    }

    
public Date getHireDay()
    
{
        
return hireDay;
    }

    
public String toString()
    
{
        
return getClass().getName()+"   name:"+name
            
+"   salary"+salary
                
+"   hireDay:"+hireDay;
    }

    
public void lixi(double b)
    
{
        
double aa=salary*b/100;
        salary
+=aa;
    }

}

只有注册用户登录后才能发表评论。


网站导航: