java createobject_【Java基础】Java创建对象的五种方式

本文详细介绍了Java中创建对象的多种方式,包括new关键字、工厂方法、克隆、反射以及序列化和反序列化。通过实例展示了如何利用ObjectOutputStream和ObjectInputStream实现对象的持久化存储与读取,加深了对Java对象生命周期的理解。
摘要由CSDN通过智能技术生成

packagemain.java;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.ObjectInputStream;importjava.io.ObjectOutputStream;/*** @description 创建对象工具类

*@authorLints

* @date 2019/12/4 10:35

* @sine version 1.0*/

public classCreateObjectUtil {//导读:不想看大片注释的朋友,在IDEA中,把光标移至块注释内,按 'Ctrl' + '-' 折叠注释。

/*** @description 通过new关键字创建(实例化)对象

*@param*@returnjava.lang.Object

*@authorLints

* @date 2019/12/4 10:36

* @sine version 1.0*/

public staticObject createObjectByNewKeyword(){

String strObj= new String("我是new关键字创建的字符串对象");returnstrObj;

}/*** @description 通过工厂方法创建(实例化)对象

*@param*@returnjava.lang.Object

*@authorLints

* @date 2019/12/4 10:36

* @sine version 1.0*/

public staticObject createObjectByFactoryMethod() {

String strObj= String.valueOf(12345);returnstrObj;

}/*** @description 通过Object类的clone()方法复制得到对象。

*@param*@returnjava.lang.Object

*@authorLints

* @date 2019/12/4 10:38

* @sine version 1.0*/

public staticObject createObjectByCloneMethod() {

CreateObjectDemo srcObj= newCreateObjectDemo();

Object cloneObj= null;try{

cloneObj=srcObj.clone();

}catch(CloneNotSupportedException e) {//todo handle the exception

}returncloneObj;

}/*** @description 根据Java反射机制获取对象

*@param*@returnjava.lang.Object

*@authorLints

* @date 2019/12/4 15:06

* @sine version 1.0*/

public staticObject createObjectByReflection() {

Object obj= null;try{

obj= CreateObjectDemo.class.newInstance();//obj = String.class.newInstance();

} catch(Exception e) {//todo handle the exception

}returnobj;

}/*** @description 通过反序列化机制读取文件对象

*@param*@returnjava.lang.Object

*@authorLints

* @date 2019/12/4 17:56

* @sine version 1.0*/

public staticObject createObjectBySerialization() {

File objFile= new File("CreateObjectDemo.obj");

CreateObjectDemo obj= newCreateObjectDemo();

CreateObjectDemo objFromFile= null;

System.out.println();

System.out.println("---序列化前---");

System.out.println("我是obj对象:" +obj);

System.out.println("我是objFromFile反序列化对象:" +objFromFile);//JDK1.7后,可以使用try-with-recources优雅关闭流对象

try(//输出流,写对象到磁盘

FileOutputStream fos = newFileOutputStream(objFile);

ObjectOutputStream oos= newObjectOutputStream(fos);//输入流,从磁盘读对象到内存

FileInputStream fis = newFileInputStream(objFile);

ObjectInputStream ois= newObjectInputStream(fis);

) {

oos.writeObject(obj);

objFromFile=(CreateObjectDemo) ois.readObject();

System.out.println();

System.out.println("---反序列化后---");

System.out.println("我是obj对象:" +obj);

System.out.println("我是objFromFile反序列化对象:" +objFromFile);

}catch(Exception e) {//todo handle exception

}returnobjFromFile;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值