Java 另一个序列化问题

Java 另一个序列化问题,java,serialization,Java,Serialization,我一直在尝试反序列化分数列表。我花了一整天的时间在这里搜索,但找不到解决办法。。我的代码如下所示: public class Score implements Comparable<Score>, Serializable { private String name; private int score; // ....... } public class MySortedList<T> extends...implements...,Seri

我一直在尝试反序列化分数列表。我花了一整天的时间在这里搜索,但找不到解决办法。。我的代码如下所示:

public class Score implements Comparable<Score>, Serializable {
    private String name;
    private int score;
    // .......

}

public class MySortedList<T> extends...implements...,Serializable {

    private ArrayList<T> list;
    // ....
}

public class ScoreManager {

    private final String FILEPATH;
    private final String FILENAME = "highscores.ser";

    private MySortedList<Score> scoreList;

    public ScoreManager() {

        File workingFolder = new File("src\\games\\serialized");
        if (!workingFolder.exists()) {
            workingFolder.mkdir();
        }
        FILEPATH = workingFolder.getAbsolutePath();

        if ((scoreList = loadScores()) == null) {
            scoreList = new MySortedList<Score>();
        }
    } 

    public void addScore(Score score) {
        scoreList.add(score);
        saveScores();
    }

    public MySortedList<Score> getScoreList() {
        return scoreList;
    }

   private void saveScores() {
       try (ObjectOutputStream out = new ObjectOutputStream(new   FileOutputStream(new File(FILEPATH, FILENAME)))) {
        out.writeObject(scoreList);
    } catch (IOException ioe) {
        ioe.printStackTrace();
    }
 }

@SuppressWarnings("unchecked")
private MySortedList<Score> loadScores() {
    try (ObjectInputStream in = new ObjectInputStream(new FileInputStream(new File(FILEPATH, FILENAME)))) {
        return (MySortedList<Score>) in.readObject();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}
}
公共类分数实现可比较、可序列化{
私有字符串名称;
个人智力得分;
// .......
}
公共类MySortedList扩展…实现…,可序列化{
私有数组列表;
// ....
}
公共班级计分经理{
私有最终字符串文件路径;
私有最终字符串FILENAME=“highscores.ser”;
私人MySortedList记分表;
公共记分经理(){
File workingFolder=新文件(“src\\games\\serialized”);
如果(!workingFolder.exists()){
workingFolder.mkdir();
}
FILEPATH=workingFolder.getAbsolutePath();
如果((scoreList=loadScores())==null){
scoreList=newmySortedList();
}
} 
公共无效添加分数(分数){
分数表。添加(分数);
saveScores();
}
public MySortedList getScoreList(){
返回记分表;
}
私有void saveScores(){
try(ObjectOutputStream out=newobjectoutputstream(newfileoutputstream(newfilepath,FILENAME))){
out.writeObject(记分表);
}捕获(ioe异常ioe){
ioe.printStackTrace();
}
}
@抑制警告(“未选中”)
私有MySortedList loadScores(){
try(ObjectInputStream in=newobjectinputstream(newfileinputstream(newfilepath,FILENAME))){
在.readObject()中返回(MySortedList);
}捕获(例外e){
e、 printStackTrace();
}
返回null;
}
}
loadScores()方法每次只返回一个空的MySortedList。 然而,程序成功地在正确的位置创建了highscores.ser文件,我绝对没有错误。分数对象已正确添加到MySortedList对象


有什么想法吗?也许值得一提的是,这是Swing中更大程序的一部分。ScoreManager类中的方法在玩家死亡时被调用

只有在它可以帮助的情况下,此代码对我有效:

class Score implements Comparable<Score>, Serializable{
    private int point;
    public Score(int point) {
        this.point = point;
    }
    public int getPoint(){
        return point;
    }
    @Override
    public int compareTo(Score o) {
        if (o.getPoint() == this.getPoint()) 
            return 0;
        return this.point < o.getPoint() ? - 1 : 1;
    }
    public String toString() {
        return "points: " + point;
    }

}
class MyList<T> implements Serializable {
    private ArrayList<T> list = new ArrayList<>();
    public void add(T e){
        list.add(e);
    }
    public void show() {
        System.out.println(list);
    }
}

public class Main {
    File workingFolder;
    String FILEPATH;
    private final String FILENAME = "highscores.ser";


    MyList<Score> list = new MyList<>();

    public static void main(String[] args) {

        Main main = new Main();
        main.createFolder();
        main.addItems();
        main.saveScores();
        MyList<Score> tempList = main.loadScores();
        tempList.show();
        main.addMoreItems();
        main.saveScores();
        tempList = main.loadScores();
        tempList.show();
    }
    private void addItems() {
        Score sc = new Score(10);
        list.add(sc);
    }
    private void addMoreItems() {
        Score sc1 = new Score(20);
        list.add(sc1);
        Score sc2 = new Score(30);
        list.add(sc2);
    }
    private void createFolder() {
        workingFolder = new File("src\\games\\serialized");
        if (!workingFolder.exists()) {
            workingFolder.mkdir();
        }
        FILEPATH = workingFolder.getAbsolutePath();
    }

    private void saveScores() {
        System.out.println("before save: " + list);
           try (ObjectOutputStream out = new ObjectOutputStream(new   FileOutputStream(new File(FILEPATH, FILENAME)))) {
            out.writeObject(list);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
    }

    @SuppressWarnings("unchecked")
    private MyList<Score> loadScores() {
        try (ObjectInputStream in = new ObjectInputStream(new FileInputStream(new File(FILEPATH, FILENAME)))) {
            return (MyList<Score>) in.readObject();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}
类分数实现可比较、可序列化{
私人积分点;
公众分数(整数分){
这个点=点;
}
公共int getPoint(){
返回点;
}
@凌驾
公共整数比较(分数o){
如果(o.getPoint()==this.getPoint())
返回0;
返回this.point
您是否获得堆栈跟踪?如果是,请将其包含在此处。您应该尝试。您是否检查了文件中是否写入了任何内容?编写后,
highscores.ser
的大小是多少?是的,它的大小是52字节。您的MySortedList从何扩展而来?所有这些超类都实现了可序列化吗?