java - 如何在java中将对象序列化为同一对象内的方法?
Posted
技术标签:
【中文标题】java - 如何在java中将对象序列化为同一对象内的方法?【英文标题】:How can I Serialize an object as a method inside the same object in java? 【发布时间】:2020-07-09 06:43:11 【问题描述】:我用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();
我需要添加一个名为 save 的方法,该方法应该能够序列化对象。 例如,当我在 main 方法中使用这样的方法时,
fm.save("test.ser");
它应该能够序列化对象到“test.ser”文件。我该怎么做?
【问题讨论】:
【参考方案1】:简单的做法是创建一个写入文件的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();
【讨论】:
如果可以的话,请帮我反序列化方法。我不知道如何使用这个关键字,从文件中读取对象时以上是关于java - 如何在java中将对象序列化为同一对象内的方法?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Jackson 中将对象序列化为 ObjectNode 的值?