关于java序列化中的一个细节
Posted 信天翁游记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于java序列化中的一个细节相关的知识,希望对你有一定的参考价值。
java序列化机制的可以参考很多资料了,最近在看的时候发现了一些问题。
1.
默认的序列化机制,很多书里讲到序列化类只序列化类名,实例变量,不会实例化类变量(static)和瞬态变量(transient).
我使用1.6,1.7,1.8测试了一下,static都是可以被序列化的。
测试代码:
1 public class Logg implements Serializable{ 2 3 private static String name; 4 private transient String pwd; 5 6 public void setName(String pwd){ 7 Logg.name=name; 8 } 9 10 public void setPwd(String pwd){ 11 this.pwd=pwd; 12 } 13 14 15 public String toString() { 16 return "name="+name+",pwd="+pwd; 17 } 18 }
1 ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("log.dat")); 2 ObjectInputStream in = new ObjectInputStream(new FileInputStream("log.dat")); 3 4 Logg logg = new Logg(); 5 logg.setName("test"); 6 logg.setPwd("111111"); 7 8 out.writeObject(logg); 9 out.close(); 10 Logg log = (Logg)in.readObject(); 11 in.close(); 12 System.out.println(log.toString());
以上是关于关于java序列化中的一个细节的主要内容,如果未能解决你的问题,请参考以下文章
Java 虚拟机原理Java 类中的类加载初始化细节 ( 只使用类中的常量时加载类不会执行到 ‘初始化‘ 阶段 )
LockSupport.java 中的 FIFO 互斥代码片段