六安网站建设网络服务,东营港,网络推广公司徽宿,安阳千度网络有限公司我们都知道一个对象仅仅要实现了Serilizable接口#xff0c;这个对象就能够被序列化#xff0c;java的这样的序列化模式为开发人员提供了非常多便利#xff0c;我们能够不必关系详细序列化的过程#xff0c;仅仅要这个类实现了Serilizable接口#xff0c;这个的全部属性和… 我们都知道一个对象仅仅要实现了Serilizable接口这个对象就能够被序列化java的这样的序列化模式为开发人员提供了非常多便利我们能够不必关系详细序列化的过程仅仅要这个类实现了Serilizable接口这个的全部属性和方法都会自己主动序列化。 然而在实际开发过程中我们经常会遇到这种问题这个类的有些属性须要序列化而其它属性不须要被序列化诚然你能够让这个类来实现Externalizable接口这个接口是Serilizable的子接口可是你必须实现readExternal和writeExternal方法你能够在这两个方法中实现详细属性的反序列化和序列化操作。然而这就意味着你必须在这两个方法中手工编写额外的代码来进行详细属性的序列化。java的transientkeyword为我们提供了便利你仅仅须要实现Serilizable接口将不须要序列化的属性前加入keywordtransient序列化对象的时候这个属性就不会序列化到指定的目的地中。 public class TestTransient { /*** param args* throws IOException * throws FileNotFoundException * throws ClassNotFoundException */public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException { A a new A(25,张三); System.out.println(a); ObjectOutputStream oos new ObjectOutputStream(new FileOutputStream(c://mm.txt)); oos.writeObject(a); oos.close(); ObjectInputStream ois new ObjectInputStream(new FileInputStream(c://mm.txt)); a (A)ois.readObject(); System.out.println(a); } } class A implements Serializable{int a;transient String b;public A(int a,String b){ this.a a; this.b b;}public String toString(){ return a a,b b;}} 执行结果例如以下 a 25,b 张三a 25,b null在上面的样例中我将属性b前加入keywordtransient我们看到尽管我们序列化的对象a的属性值为“张三”可是当我们反序列化之后发现这个属性为空说明这个属性没有进行序列化。 转载于:https://www.cnblogs.com/mengfanrong/p/3779727.html