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;
}
}