5种创建Java对象的方式( 二 )

接下来,将通过一个简单的示例,演示如何使用反序列化的方式创建新的对象:
package com.ramostear.oops;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;public class StudentDemo {public static void main(String[] args) {String filePath = "data.txt";Student student1 = new Student("Deserialization", "反序列化");try {FileOutputStream fileOutputStream = new FileOutputStream(filePath);ObjectOutputStream outputStream = new ObjectOutputStream(fileOutputStream);outputStream.writeObject(student1);outputStream.flush();outputStream.close();FileInputStream fileInputStream = new FileInputStream(filePath);ObjectInputStream inputStream = new ObjectInputStream(fileInputStream);Student student2 = (Student) inputStream.readObject();inputStream.close();System.out.println("Student name:"+student2.getName()+", nickname:"+student2.getNickname());} catch (Exception ee) {ee.printStackTrace();}}}执行上述代码,将在控制台输出如下信息:
Student name:Deserialization,nickname:反序列化5. 使用对象克隆创建新的对象? clone()方法可以创建现有对象的副本,但在使用clone()方法前,需保证模板类实现了Cloneable接口,Cloneable接口也是一个标记类接口 。下面是使用克隆方式创建新对象的完整示例:
package net.javaguides.corejava.oops;import java.io.Serializable;public class Student implements Cloneable {private String name;private String nickname;public Student() {super();}public Student(String name, String nickname) {super();this.name = name;this.nickname = nickname;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getNickname() {return nickname;}public void setNickname(String nickname) {this.nickname = nickname;}public static void main(String args[]) {Student stu1 = new Student("Clone", "克隆");try {Student stu2 = (Student) stu1.clone();System.out.println("Student name :"+stu2.getName()+",nickname:"+stu2.getNickanme());} catch (CloneNotSupportedException e) {e.printStackTrace();}}}运行上述代码,控制台将输出如下信息:
Student name: Clone,nickname:克隆



推荐阅读