Java 我怎样才能使这个序列化工作?
这个想法是关于序列化这个box代码。该程序将构建flashcard,我希望在应用程序退出文件时使用序列化来保存应用程序框的状态,并在启动时加载文件。所以我不必从头重做所有的抽认卡。方框代码如下:Java 我怎样才能使这个序列化工作?,java,eclipse,serialization,Java,Eclipse,Serialization,这个想法是关于序列化这个box代码。该程序将构建flashcard,我希望在应用程序退出文件时使用序列化来保存应用程序框的状态,并在启动时加载文件。所以我不必从头重做所有的抽认卡。方框代码如下: import java.util.ArrayList; import java.util.Iterator; public class Box implements java.io.Serializable { private ArrayList<Flashcard> cards; p
import java.util.ArrayList;
import java.util.Iterator;
public class Box implements java.io.Serializable {
private ArrayList<Flashcard> cards;
private double prossibility;
private double pivot; //determine the box's selected scope [pivot - prossibility,pivot)
public Box(){
cards = new ArrayList<Flashcard>();
prossibility = 0.0;
pivot = 0.0;
}
public Box(double prossibility,double pivot){
this.cards = new ArrayList<Flashcard>();
this.prossibility = prossibility;
this.pivot = pivot;
}
public Box(ArrayList<Flashcard> cards){
this.cards = cards;
}
public ArrayList<Flashcard> getCards() {
return cards;
}
public void setProssibility(double prossibility){
this.prossibility = prossibility;
}
public double getProssibility(){
return prossibility;
}
public void setPivot(double pivot){
this.pivot = pivot;
}
public double getPivot(){
return pivot;
}
public void addCard(Flashcard card){
cards.add(card);
}
public int searchCard(String challenge){
Iterator<Flashcard> it = cards.iterator();
int index = 0;
while(it.hasNext()){
Flashcard temp = (Flashcard)it.next();
if(temp.getChallenge().equals(challenge)){
break;
}
++index;
}
if(index >= cards.size())
index = -1;
return index;
}
public void removeCard(String challenge){
int index = searchCard(challenge);
if(index >= 0)
cards.remove(index);
}
}
我所做的序列化代码如下所示:
import java.io.*;
public class Savingbox implements Serializable {
public static void main(String[] args){
Box e = new Box();
那么,如何让savingbox类保存用户刚才使用的结果呢?据我所知,您希望将Flashcard对象保存到一个文件中,然后将其读回。下面是一个链接,它解释了如何:通过将可序列化对象写入
ObjectOutputStream
,可以最轻松地序列化该对象。当您尝试对类的实例执行此操作时,您可能会发现您需要使类Flashcard
实现可序列化
。因此,事实上,我应该使这两个类都可序列化,但不是唯一的一个?因此,当我使用序列化时,它不会对原始类执行任何操作,对吗?如果你想序列化一个对象,那么你必须能够序列化从它可以访问的每个对象。在您的情况下,这可能包括一些Flashcard
实例。除了使所有涉及的类都可序列化之外,还有其他方法可以做到这一点,但如果可以做到这一点,那么使它们都可序列化可能是最简单的选择。至于java.io.Serializable
接口本身,它没有方法,因此想要实现它的类只需声明它们这样做。现在我知道该怎么做了。在答案中,如果有一个指向另一个SO问题的链接作为主要信息,显然可以将这个问题视为重复问题,因此应该完全关闭它。如果你的主要目的是得到澄清(关于理解什么),这更多的是一个评论而不是一个答案。是的。这就是我想要的。将flashcard对象保存到文件中,并在我进入时读回。所以我的问题是,我应该向flashcard类或box类添加任何代码,比如near!退出以进行分析,以便在序列化类中调用它?在执行序列化时,如何确保字段可序列化?我的意思是不需要测试,你也需要将Flashcard标记为可序列化。你们能保存这个盒子吗?这样它就可以保存盒子里的所有东西,包括抽认卡。下面是一段代码:public类Savingbox实现可序列化的{public static void main(String[]args){Savingbox Savingbox=new Savingbox();Savingbox.buildBox();}public void saveBox(){ObjectOutputStream oos=null;FileOutputStream fout=null;尝试{Box Box Box=new Box();fout=newfileoutputstream(“c:\\dev\\deleteme\\flashcard.ser”);oos=newobjectoutputstream(fout);oos.writeObject(box);}catch(IOException e){e.printStackTrace();}最后{if(oos!=null){try{oos.close();}catch(IOException e){e.printStackTrace();}
import java.io.*;
public class Savingbox implements Serializable {
public static void main(String[] args){
Box e = new Box();