原型模式深浅复制
来源:互联网 发布:c语言代码图片 编辑:程序博客网 时间:2024/05/29 14:12
java.awt.Component 实现了 Serializable 接口, 所有Component的子类,包括Button、Scorollbar、TestArea、List、Container、Panel、java.applet.Applet以及所有的Applet的子类和Swing的子类都是可以串行化的。
java.lang.Throwable类实现了Serializable接口,所有的Exception和Error类均是可以串行化的。而流、所有的Reader和Writer以及其他的I/O类都是不可以串行化的。AWT和Swing、容器类、事件类都是可以串行化的。事件适配器类、图像过滤器类、AWT包中与操作系统相关的特性类都是不可以串行化的。原始类型的封装类中只有void类是可以串行化的。多数的java.lang包中的类是不可以串行化的。反射类是不可以串行化的。java.math中的类都是可以串行化的。压缩类都是不可以串行化的。
大圣
java.lang.Throwable类实现了Serializable接口,所有的Exception和Error类均是可以串行化的。而流、所有的Reader和Writer以及其他的I/O类都是不可以串行化的。AWT和Swing、容器类、事件类都是可以串行化的。事件适配器类、图像过滤器类、AWT包中与操作系统相关的特性类都是不可以串行化的。原始类型的封装类中只有void类是可以串行化的。多数的java.lang包中的类是不可以串行化的。反射类是不可以串行化的。java.math中的类都是可以串行化的。压缩类都是不可以串行化的。
大圣
public class TheGreatestSage {
private Monkey monkey = new Monkey();
public void change() throws Exception{
Monkey copyMonkey;
for(int i = 0;i < 2000;i++){}
copyMonkey = (Monkey)monkey.deepClone();
System.out.println("Monkey King's birth date = "+monkey.getBirthDate());
System.out.println("Copy monkey's birth date = "+copyMonkey.getBirthDate());
System.out.println("Monkey King == Copy Monkey? "+(monkey == copyMonkey));
System.out.println("Monkey King's staff == Copy Monkey's staff ?"+(monkey.getStaff() == copyMonkey.getStaff()));
}
public static void main(String[] args) throws Exception {
TheGreatestSage sage = new TheGreatestSage();
sage.change();
}
}
猴子
public class Monkey implements Cloneable,Serializable{
猴子
public class Monkey implements Cloneable,Serializable{
private int height;
private int weight;
private GoldRingedStaff staff;
private Date birthDate;
public Monkey() {
this.birthDate = new Date();
this.staff = new GoldRingedStaff();
}
public Object deepClone()throws Exception{
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();
}
public Object clone(){
Monkey temp = null;
try{
temp = (Monkey)super.clone();
}catch(CloneNotSupportedException ex){
System.out.println("Clone failed");
}finally{
return temp;
}
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
public Date getBirthDate() {
return birthDate;
}
public void setBirthDate(Date birthDate) {
this.birthDate = birthDate;
}
public GoldRingedStaff getStaff() {
return staff;
}
public void setStaff(GoldRingedStaff staff) {
this.staff = staff;
}
}
金箍棒
public class GoldRingedStaff implements Serializable,Cloneable{
金箍棒
public class GoldRingedStaff implements Serializable,Cloneable{
private float height = 100.0F;
private float diameter = 10.0F;
public GoldRingedStaff(){}
public void grow(){
this.diameter *= 2.0;
this.height *= 2.0;
}
public void shrink(){
this.diameter /= 2.0;
this.height /= 2;
}
public void move(){}
public float getHeight() {
return height;
}
public void setHeight(float height) {
this.height = height;
}
public float getDiameter() {
return diameter;
}
public void setDiameter(float diameter) {
this.diameter = diameter;
}
}
- 原型模式深浅复制
- 原型模式中的深浅复制
- 原型模式之深浅复制
- 原型模式的深浅复制和序列化
- 设计模式学习笔记九:原型模式(和深浅复制)
- 七、原型模式(深浅克隆)
- 原型模式(重新思考深浅拷贝)
- 深度揭秘原型(深浅克隆)模式!
- 深浅复制
- 深浅复制
- 深浅复制
- 深浅复制
- 深浅复制
- 深浅复制
- 深浅复制
- Java设计模式之原型模式与深浅拷贝
- 原型模式浅复制和深复制
- 原型模式深复制浅复制
- 笔试题目练习
- WebView中接口隐患与手机挂马利用 转载乌云
- 1
- Exercises 4.1 E2
- 关于“android4.0中,在通话界面进入锁屏界面后出现两个电话图标”这一Bug的解决方法
- 原型模式深浅复制
- C++创建一个类(1.只能在堆上创建; 2 只能在栈上创建; 3 不能被继承(堆上和栈上都可以创建))
- 时钟周期、机器周期、指令周期的概念及三者之间的关系
- SQLite3纪要
- 使用 VNC 实现多用户登录
- CentOS6.2安装memcache
- 指针
- MinGW下创建DLL
- Maven常用命令