首页 > 解决方案 > 使用 objectOutputStream 时不返回对象属性

问题描述

我正在尝试在 Android Studio 中制作一个应用程序,作为其中的一部分,我想保存一个 Player 对象,主要是为了跟踪他们的长期平均得分。

Player 对象包含多个变量name average score

一些变量随着每一轮而改变,而一些变量将保持不变。在每回合结束时,它们中的大多数会重置为 0,但average会保持不变。平均值是 int 类型,因为它需要一个十进制值。

我有以下代码可以编译并运行,但没有任何反应,使用调试器表明它似乎只读取FileOutputStreamObjectOutputStream

//Write data to file
        try{
            FileOutputStream f = new FileOutputStream(new File("myObject.txt"));
            ObjectOutputStream o = new ObjectOutputStream(f);
            o.writeObject(p1);
            o.close();
            f.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

//Read data from file
        try {
            FileInputStream fi = new FileInputStream(new File("myObject.txt"));
            ObjectInputStream oi = new ObjectInputStream(fi);

            p2 = (Player) oi.readObject();

            oi.close();
            fi.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }


    }

我已经设置了我的对象,因此它具有分配给它的属性。我还尝试了一个简化版本,它只包含一个只有 a的Player对象,但我仍然没有运气。nameaverage

请任何人都可以告诉我我做错了什么。

Player班级

import java.io.Serializable;

public class Player implements Serializable {

     String name;
    private int score;
    private float average;

    public Player(String aName){
        this.name = aName;
        this.average = 20f;
        this.score = 45;
    }

    @Override
    public String toString(){
        return "Name: "+this.name + "\nScore: "+this.score+"\nAverage: "+this.average;
    }
}

这是简化版本,而不是显示具有所有属性的版本。

标签: javaandroid

解决方案


推荐阅读