本文实例讲述了java对象序列化操作。分享给大家供大家参考,具体如下:
在java中可以将对象进行序列化操作
要使对象能够被序列化,那么被序列化的对象要实现接口Serializable,此接口位于java.io包中
pakacge demo; import java.io.Serializable; /** * 实现了Serializable 接口的demo类 */ public class Demo1 implements Serializable { private String name; private String sex; private int age; public Demo1() { } public Demo1(String name,String sex,int age) { this.setName(name); this.setSex(sex); this.setAge(age); } public void setName(String name) { this.name = name; } public String getName() { return this.name; } public void setSex(String sex) { this.sex = sex; } public String getSex() { return this.sex; } public void setAge(int age) { this.age = age; } public int getAge() { return this.age; } }
序列化对象案例程序,网上的教程是将序列化的对象输出到文件,但一般我们是将序列化的对象存储在字符串中,并转存到数据库中。所以这里我用ByteArrayOutputStream 对象替代文件输出对象
import demo.Demo1; import java.io.*; public class Index { public static void main(String[] agrs) { test1(); } public static void test1() { Demo1 demo1 = new Demo1("谭勇","男",23); try{ //实例化一个ByteArray 对象 ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); //实例化对象序列化输入流,并设置序列化后的对象输出到byteOut对象 ObjectOutputStream objOutputStream = new ObjectOutputStream(byteOut); //将对象写入到byteOut 对象中 objOutputStream.writeObject(demo1); //序列化后的对象转String 存储 String strObj = byteOut.toString("ISO-8859-1"); //关闭流 objOutputStream.close(); byteOut.close(); /***************将序列化字符串转对象******************/ //实例一个序列化对象输入流 ByteArrayInputStream byteInputStream = new ByteArrayInputStream(strObj.getBytes("ISO-8859-1")); //序列化对象输入流 ObjectInputStream objInput = new ObjectInputStream(byteInputStream); //将序列化对象转对象 Demo1 demo1_ser = (Demo1)objInput.readObject(); //关闭流 objInput.close(); byteInputStream.close(); System.out.println(demo1_ser.getName()); System.out.println(strObj); }catch(IOException e){ System.out.println(e.getMessage()); }catch(ClassNotFoundException e){ System.out.println(e.getMessage()); } } }
运行结果:
更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。