1、 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 import java.io.ByteArrayInputStream; java.io.ByteArrayOutputStream; java.io.ObjectInputStream; java.io.ObjectOutputStream; public class MyUtil private MyUtil() throw new AssertionError(); static T clone(T obj) throws Exception ByteArrayOutputStream b
2、out = ByteArrayOutputStream(); ObjectOutputStream oos = ObjectOutputStream(bout); oos.writeObject(obj); ByteArrayInputStream bin = ByteArrayInputStream(bout.toByteArray(); ObjectInputStream ois = ObjectInputStream(bin); return (T) ois.readObject(); / 说明:调用ByteArrayInputStream或ByteArrayOutputStream对象
3、的close方法没有任何意义 / 这两个基于内存的流只要垃圾回收器清理对象就能够释放资源,这一点不同于对外部资源(如文件流)的释放 下面是测试代码: 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 java.io.Serializable; /* * 人类 * author 骆昊 * */ Person implements Serializable final long serialVersionUID = -9102017020286042305L; String name; / 姓
4、名 int age; / 年龄 Car car; / 座驾 Person(String name, age, Car car) this .name = name; .age = age; .car = car; String getName() name; void setName(String name) getAge() setAge( age) Car getCar() car; setCar(Car car) Override String toString() Person name= + name + , age= + age + , car= + car + ; * 小汽车类 Car serialVersionUID = -5713945027627603702L; String brand; / 品牌 maxSpeed; / 最高时速 Car(String brand, maxSpeed) .brand = brand; .maxSpeed = maxSpeed; String getBrand() brand; setBrand(String brand) getMaxSpeed() setMaxSpeed( O