Serializable对象序列化实例

       本例说明了如何使用Serializable接口实现对象在同一个虚拟机或者两个虚拟机之间实现对象的序列化工作。

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class CardReader {
    public static void main(String[] args) {
        Card3 card = new Card3(12, Card3.SPADES);
        System.out.println("Card to write is: " + card);

        try {
            FileOutputStream out = new FileOutputStream("card.out");
            ObjectOutputStream oos = new ObjectOutputStream(out);
            oos.writeObject(card);
            oos.flush();
        catch (Exception e) {
            System.out.println("Problem serializing: " + e);
        }

        Card3 acard = null;

        try {
            FileInputStream in = new FileInputStream("card.out");
            ObjectInputStream ois = new ObjectInputStream(in);
            acard = (Card3) (ois.readObject());
        catch (Exception e) {
            System.out.println("Problem serializing: " + e);
        }

        System.out.println("Card read is: " + acard);

    }
}

class Card3 implements Serializable {
    private int suit = UNASSIGNED;

    private int number = UNASSIGNED;

    public final static int UNASSIGNED = -1;

    public final static int DIAMONDS = 1;

    public final static int CLUBS = 2;

    public final static int HEARTS = 3;

    public final static int SPADES = 4;

    public final static int ACE = 1;

    public final static int KING = 13;

    public Card3(int number, int suit) {
        if (isValidNumber(number)) {
            this.number = number;
        else {
        //Error
        }

        if (isValidSuit(suit)) {
            this.suit = suit;
        else {
      //Error
    }
}

public int getSuit() {
    return suit;
}

public int getNumber() {
    return number;
}

public static boolean isValidNumber(int number) {
    if (number >= ACE && number <= KING) {
        return true;
    else {
        return false;
    }
}

public static boolean isValidSuit(int suit) {
    if (suit >= DIAMONDS && suit <= SPADES) {
        return true;
    else {
        return false;
    }
}

public boolean equals(Object obj) {
    if (obj instanceof Card3) {
        Card3 card = (Card3obj;
        if (card.getNumber() == this.number && card.getSuit() == this.suit) {
            return true;
        else {
            return false;
        }
    else {
        return false;
    }
}

public int hashCode() {
    return number * suit;
}

public String toString() {
    return numberToString(this.number" of " + suitToString(this.suit);
}

public static String numberToString(int number) {
    String result = "";
    switch (number) {
        case ACE:
            result = "Ace";
            break;
        case 2:
            result = "Two";
            break;
        case 3:
            result = "Three";
            break;
        case 4:
            result = "Four";
            break;
        case 5:
            result = "Five";
            break;
        case 6:
            result = "Six";
            break;
        case 7:
            result = "Seven";
            break;
        case 8:
            result = "Eight";
            break;
        case 9:
            result = "Nine";
            break;
        case 10:
            result = "Ten";
            break;
        case 11:
            result = "Jack";
            break;
        case 12:
            result = "Queen";
            break;
        case KING:
            result = "King";
            break;
        case UNASSIGNED:
            result = "Invalid Number";
            break;
    }
    return result;
}

public static String suitToString(int suit) {
    String result = "";
    switch (suit) {
        case DIAMONDS:
            result = "Diamonds";
            break;
        case CLUBS:
            result = "Clubs";
            break;
        case HEARTS:
            result = "Hearts";
            break;
        case SPADES:
            result = "Spades";
            break;
        case UNASSIGNED:
            result = "Invalid Suit";
            break;
    }
    return result;
  }
}

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值