zoukankan      html  css  js  c++  java
  • 对象的序列化

    import java.io.Serializable;
    import java.io.*;
    
    class Data implements Serializable {
    	private int i;
    
    	Data(int x) {
    		i = x;
    	}
    
    	public String toString() {
    		return Integer.toString(i);
    	}
    }
    
    public class Worm implements Serializable {
    	private static int r() {
    		return (int) (Math.random() * 10);
    	}
    
    	private Data[] datas = { new Data(r()), new Data(r()), new Data(r()) };
    
    	private Worm next;
    	private char c;
    
    	Worm(int i, char x) {
    		System.out.println("worm constructor:" + i);
    		c = x;
    		if (--i > 0) {
    			next = new Worm(i, (char) (x + 1));
    		}
    	}
    
    	Worm() {
    		System.out.println("deault constructor");
    	}
    
    	public String toString() {
    		String s = " ";
    		for (int i = 0; i < datas.length; i++) {
    			s += datas[i].toString();
    		}
    		if (next != null) {
    			s += next.toString();
    		}
    		return s;
    	}
    
    	public static void main(String[] args) {
    		Worm w = new Worm(6, 'a');
    		System.out.println("w = " + w);
    		try {
    			ObjectOutputStream out = new ObjectOutputStream(
    					new FileOutputStream("worm.out"));
    			out.writeObject("Worm storage");
    			out.writeObject(w);
    			out.close(); // Also flushes output
    			ObjectInputStream in = new ObjectInputStream(new FileInputStream(
    					"worm.out"));
    			String s = (String) in.readObject();
    			Worm w2 = (Worm) in.readObject();
    			System.out.println(s + ", w2 = " + w2);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		try {
    			ByteArrayOutputStream bout = new ByteArrayOutputStream();
    			ObjectOutputStream out = new ObjectOutputStream(bout);
    			out.writeObject("Worm storage");
    			out.writeObject(w);
    			out.flush();
    			ObjectInputStream in = new ObjectInputStream(
    					new ByteArrayInputStream(bout.toByteArray()));
    			String s = (String) in.readObject();
    			Worm w3 = (Worm) in.readObject();
    			System.out.println(s + ", w3 = " + w3);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    }
    

      

  • 相关阅读:
    C/C++ volatile
    Linux fopen/fread/fwrite和open/read/write
    反思 承认失败,负重前行。
    算法和数据结构 打印回形矩阵
    Linux 软链接和硬链接
    数据库 CAS原理和ABA问题
    算法和数据结构 海量数据求前K个数
    算法和数据结构 冒泡排序
    java中的经典算法之选择排序(SelectionSort)
    【Java】常量、关键字、标识符、注释
  • 原文地址:https://www.cnblogs.com/chuiyuan/p/4349735.html
Copyright © 2011-2022 走看看