java - 使用 objectOutputStream 时不返回对象属性
问题描述
我正在尝试在 Android Studio 中制作一个应用程序,作为其中的一部分,我想保存一个 Player 对象,主要是为了跟踪他们的长期平均得分。
Player 对象包含多个变量name
average
score
。
一些变量随着每一轮而改变,而一些变量将保持不变。在每回合结束时,它们中的大多数会重置为 0,但average
会保持不变。平均值是 int 类型,因为它需要一个十进制值。
我有以下代码可以编译并运行,但没有任何反应,使用调试器表明它似乎只读取FileOutputStream
了ObjectOutputStream
//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
对象,但我仍然没有运气。name
average
请任何人都可以告诉我我做错了什么。
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;
}
}
这是简化版本,而不是显示具有所有属性的版本。
解决方案
推荐阅读
- prestashop - 如何随着时间的推移限制对产品的访问?
- node.js - 如何将 ConPTY 输出转换为 HTML
- python - Python 错误:“TypeError:'NoneType' 类型的对象没有 len()”
- python - 在 Ubuntu 20.4 LTS 上使用 GPU (CUDA-11.0) 运行代码时的 TensorFlow 问题
- python - 我怎样才能得到最后一条不和谐的消息
- python - 错误:无法符号链接 Frameworks/Python.framework/Versions/3.9/Headers
- vba - 在 VBA 中更改日期的格式
- c# - 如何在 Avalonia 中获取点击事件的相对位置?
- php - 如何将 mongoDB 数组查询转换为 PHP
- amazon-web-services - 我更改了我的 EC2 实例安全组,但它不再有效