どのように私はJavaで同じオブジェクト内のメソッドとしてオブジェクトをシリアル化することができますか?

Jeewantha Lahiru:

私はシンプル作成した銀行取引明細書のプログラムを Javaで。そこと呼ばれるクラスでFinancialManagerは、それが誰かの銀行取引明細書を制御します。FinancialManagerクラスは以下の通りです。

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.Vector;

public class FinancialManager implements Serializable{
    private double balance1;
    private Vector<String> statement1;
    public FinancialManager(){
        balance1=0;
        statement1 = new Vector<String>();
    }
    public void deposit(double value){
        balance1 = balance1+value;
        String st = "Deposit  "+String.valueOf(value);
        statement1.add(st);
    }
    public void withdraw(double value){
        if(value<balance1){
            balance1 = balance1 - value;
            String st = "Withdraw "+String.valueOf(value);
            statement1.add(st);
        }else{
            String st = "Withdraw 0.0";
            statement1.add(st);
        }
    }
    public String balance(){
        return String.valueOf(balance1);
    }
    public void statement(){
        String[] array = statement1.toArray(new String[statement1.size()]);
        for(int i=0;i<array.length;i++){
            System.out.println(array[i]);
        }
    }
}

メインクラスは以下の通りです。

public class Main {
    public static void main(String[] args) {
        FinancialManager fm = new FinancialManager();
        fm.deposit(25.00);
        fm.withdraw(12.00);
        fm.deposit(10.00);
        fm.deposit(5.00);
        fm.withdraw(8.00);
        System.out.println("The current balance is "+fm.balance());
        fm.statement();

    }
}

私は保存というメソッドを追加する必要があり、その方法は、することができるはずシリアライズしたオブジェクトを。私は、メインメソッドで、次のようにそのメソッドを使用する場合の例として、

fm.save("test.ser");

することができるはずシリアライズ私はそれを行うことができますfile.How「test.ser」にオブジェクトを?

ジョニ:

行うには簡単なことで作成されObjectOutputStreamたファイルへの書き込みを行うことを。例えば:

    public void save(String fileName) throws IOException {
        Path filePath = Path.of(fileName);
        try (ObjectOutputStream objectOutputStream = new ObjectOutputStream(Files.newOutputStream(filePath))) {
            // write "this" - the current object - to the file
            objectOutputStream.writeObject(this);
        }
    }

バック、使用するObjectInputStreamでそれを読むには:

    public static FinancialManager open(String fileName) throws IOException, ClassNotFoundException {
        Path filePath = Path.of(fileName);
        try (ObjectInputStream objectInputStream = new ObjectInputStream(Files.newInputStream(filePath))) {
            return (FinancialManager) objectInputStream.readObject();
        }
    }

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=361662&siteId=1