自定义序列化实现Externalizable接口需要注意的问题
2017-01-17 15:26
288 查看
package com.zhen.demo; import java.io.Externalizable; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; public class Person5 implements Externalizable{ private String name; private int age; public Person5(){} public Person5(String name, int age) { super(); this.name = name; this.age = 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; } @Override public void writeExternal(ObjectOutput out) throws IOException { out.writeObject(new StringBuffer(name).reverse()); out.writeInt(age); } @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { this.name = ((StringBuffer)in.readObject()).reverse().toString(); this.age = in.readInt(); } @Override public String toString() { return "Person5 [name=" + name + ", age=" + age + "]"; } }
实现该接口与实现Serializable接口的情况不太一样,需要序列化的类要提供无参构造器,且访问修饰符不能是private和protected和默认的修饰符,只能是public,否则会报错;
Exception in thread "main" java.io.InvalidClassException: com.zhen.demo.Person5; no valid constructorat java.io.ObjectStreamClass$ExceptionInfo.newInvalidClassException(ObjectStreamClass.java:150)at java.io.ObjectStreamClass.checkDeserialize(ObjectStreamClass.java:790)at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1782)at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)at com.zhen.demo.WriteObject.main(WriteObject.java:44)
相关文章推荐
- ASP.NET中实现二级或多级域名(修改UrlRewrite)需要注意的问题
- 为DataGrid写一个Renderer需要注意实现的两个接口:IListDataRenderer和IDropInListDataRenderer
- 用mysql+redis实现微博feed架构上需要注意哪些问题
- 多分录打印的实现及需要注意的问题
- 用mysql+redis实现微博feed架构上需要注意哪些问题
- 【转】自定义排序函数实现时需要注意的问题
- 自定义排序函数实现时需要注意的问题
- Rails3做Json接口需要注意的问题
- java中的继承问题,类B继承A,那么构造方法需要这样写吗?这不是重复吗?还有接口与抽象类怎么实现?
- 二分查找(Binary Search)需要注意的问题,以及在数据库内核中的实现
- C++学习总结_成员函数的声明和实现需要注意问题
- 关于项目研发重要接口需要注意的问题
- 使用Spring的Service注入Dao接口需要注意的细节问题
- 使用C++实现JNI接口需要注意的事项
- 使用C++实现JNI接口需要注意的事项
- ASP.NET中实现二级或多级域名(修改UrlRewrite)需要注意的问题 (转)
- 使用C++实现JNI接口需要注意的事项
- ASP.NET中实现二级或多级域名(修改UrlRewrite)需要注意的问题
- 使用C++实现JNI接口需要注意的事项
- MVC模式实现用户登录练习中遇到的问题和需要注意的细节