Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我怎样才能使这个序列化工作?_Java_Eclipse_Serialization - Fatal编程技术网

Java 我怎样才能使这个序列化工作?

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

这个想法是关于序列化这个box代码。该程序将构建flashcard,我希望在应用程序退出文件时使用序列化来保存应用程序框的状态,并在启动时加载文件。所以我不必从头重做所有的抽认卡。方框代码如下:

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();