java中提供了以下四种创建对象的方式:
new创建新对象
通过反射机制
通过反射机制创建对象时,首先通过反射机制加载类获得Class类,获得Class类的方法主要有以下三种:
Class.forName("类的全路径");
类名.Class;
实例.getClass();
其次使用newInstance()方法创建该类的对象。
采用clone机制
通过序列化机制
通过反序列化创建对象
package com.java.test;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
//Serializable-->标志性接口,表示该类的数据成员可以被序列化
public class People implements Serializable{
public String name;
public int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public People(){
this.name="Lili";
this.age=18;
}
public static void main(String[] args){
People p=new People();
ObjectOutputStream oos=null;
ObjectInputStream ois=null;
try{
FileOutputStream fos=new FileOutputStream("people.txt");
oos=new ObjectOutputStream(fos);
oos.writeObject(p);
oos.close();
}catch(Exception e){
e.printStackTrace();
}
//反序列化
try{
FileInputStream fis=new FileInputStream("people.txt");
ois=new ObjectInputStream(fis);
People p1=(People) ois.readObject();
System.out.println("p1和p是同一个对象吗?"+(p1==p));
}catch(Exception e){
e.printStackTrace();
}
}
}
//p1和p是同一个对象吗?false序列化时首先创建一个输出流对象oos,使用oos的writeObject()方法将p对象写入oos对象中去。使用反序列化创建对象时,首先创建一个输入流对象ois,使用输入流对象ois的readObject()方法将序列化存入的对象读出,重新创建一个对象。
本文介绍了Java中四种创建对象的方法,包括使用`new`关键字、反射机制(通过`Class.forName()`,类名.Class,实例.getClass()获取Class对象后调用`newInstance()`)、克隆以及通过序列化和反序列化过程。示例代码展示了如何对一个实现了Serializable接口的类进行序列化和反序列化操作,演示了反序列化如何创建新对象,而不是复用原有的对象。
4567

被折叠的 条评论
为什么被折叠?



