Java ObjectInputStream读取空对象
我使用ObjectOutputStream编写了一个对象,并使用ObjectInputStream读取它,然后对它进行了测试,得到了预期的结果。但当在其他机器上写入对象,在我的计算机上读取时,读取对象的成员是空的。有人能帮我吗?谢谢Java ObjectInputStream读取空对象,java,objectinputstream,objectoutputstream,Java,Objectinputstream,Objectoutputstream,我使用ObjectOutputStream编写了一个对象,并使用ObjectInputStream读取它,然后对它进行了测试,得到了预期的结果。但当在其他机器上写入对象,在我的计算机上读取时,读取对象的成员是空的。有人能帮我吗?谢谢 public class TrustNet implements Serializable{ public double[][] trusts; public double avg = 0; public TrustNet(i
public class TrustNet implements Serializable{
public double[][] trusts;
public double avg = 0;
public TrustNet(int size){
trusts = new double[size][size];
}
public void writeToFile(String fileName){
try(ObjectOutputStream writer = new ObjectOutputStream(new FileOutputStream(fileName))){
writer.writeObject(this);
writer.flush();
} catch (IOException ex) {
ex.printStackTrace();
}
}
public static TrustNet readFromFile(String fileName){
try(ObjectInputStream writer = new ObjectInputStream(new FileInputStream(fileName))){
return (TrustNet) writer.readObject();
} catch (IOException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
return null;
}
}
我花了一天的时间才弄清楚到底发生了什么。我想我终于找到了答案。也许它会帮助其他有类似问题的人 在我的例子中,问题是由于使用了ProGuard
a
、b
、c
等共享您迄今为止编写的代码
读取对象的成员为空
,这是什么意思?它返回null
?@cstur4不在注释中发布代码。你可以自己看清楚它是难以辨认的。将其编辑到您的帖子中。请同时显示写入和读取代码,并说明如何传输文件。谢谢:)空对象表示其字段是默认值,而不是我保存的值。我只是在服务器上运行writeToFile函数,然后将文件复制到本地计算机上,然后运行readFromFile函数来获取TurstNet,但字段是默认值。当写和读都在本地机器上时,它就可以正常工作。我也有同样的问题。在所有字段中只使用默认值重试反序列化对象的原因可能是什么?在我的例子中,它适用于一个Android应用程序版本,但当用户更新到下一个版本的应用程序时,问题就会出现。存储在内部存储文件中的文件无法正常读取。