Java笔试试题如何实现对象克隆Word格式文档下载.docx
《Java笔试试题如何实现对象克隆Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Java笔试试题如何实现对象克隆Word格式文档下载.docx(23页珍藏版)》请在冰豆网上搜索。
![Java笔试试题如何实现对象克隆Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-10/9/ab5a077e-51f9-4dc2-b22e-1d986abe5d53/ab5a077e-51f9-4dc2-b22e-1d986abe5d531.gif)
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>
Tclone(Tobj)
throws
Exception{
ByteArrayOutputStreambout=
ByteArrayOutputStream();
ObjectOutputStreamoos=
ObjectOutputStream(bout);
oos.writeObject(obj);
ByteArrayInputStreambin=
ByteArrayInputStream(bout.toByteArray());
ObjectInputStreamois=
ObjectInputStream(bin);
return
(T)ois.readObject();
//说明:
调用ByteArrayInputStream或ByteArrayOutputStream对象的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;
Stringname;
//姓名
int
age;
//年龄
Carcar;
//座驾
Person(Stringname,
age,Carcar){
this
.name=name;
.age=age;
.car=car;
StringgetName(){
name;
void
setName(Stringname){
getAge(){
setAge(
age){
CargetCar(){
car;
setCar(Carcar){
@Override
StringtoString(){
"
Person[name="
+name+
age="
+age+
car="
+car+
]"
;
*小汽车类
Car
serialVersionUID=-5713945027627603702L;
Stringbrand;
//品牌
maxSpeed;
//最高时速
Car(Stringbrand,
maxSpeed){
.brand=brand;
.maxSpeed=maxSpeed;
StringgetBrand(){
brand;
setBrand(Stringbrand){
getMaxSpeed(){
setMaxSpeed(
@O