我正在尝试使用Java中的简单程序通过以下代码使用可序列化
保存对象状态,一旦我写入这些对象,然后将它们设置为空,但是当我尝试将它们取回时给我空值
,它不应该给我存储的值吗? 当我运行这个程序时,答案是 null null null
,请查看并指导我,
游戏.java
public class Game implements Serializable{
public Game() {
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public String getType() {
return Type;
}
public void setType(String type) {
Type = type;
}
public String[] getName() {
return name;
}
public void setName(String[] name) {
this.name = name;
}
int size;
String Type ;
String [] name;
public Game (int thesize , String theType, String[] names )
{
this.size = thesize;
this.Type= theType;
this.name = names;
}
}
GameCharacter.java
public class GameCharacter extends Game {
public GameCharacter(int i, String Type, String[] strings) {
// TODO Auto-generated constructor stub
}
/**
* @param args
* @throws IOException
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException, IOException {
Game g= new Game();
GameCharacter GC1= new GameCharacter(1, "One " , new String [] {"bow", "SWord", "Dust"});
GameCharacter GC2 = new GameCharacter(2, "TWo", new String[] {"One ", "TWo ", "Three"});
GameCharacter GC3= new GameCharacter(3, "Three", new String[] {"four ", "five ", "six"});
ObjectOutputStream oos= new ObjectOutputStream (new FileOutputStream("Game.ser"));
oos.writeObject(GC1);
oos.writeObject(GC2);
oos.writeObject(GC3);
oos.close();
GC1= null;
GC2= null;
GC3= null;
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("Game.ser"));
try
{
GameCharacter onerestore= (GameCharacter) ois.readObject();
GameCharacter tworestore = (GameCharacter) ois.readObject();
GameCharacter threerestore= (GameCharacter) ois.readObject();
System.out.print(onerestore.getName());
System.out.println(tworestore.getType());
System.out.println(threerestore.getName());
//System.out.println("HEllo");
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
}
最佳答案
您的 GameCharacter 构造函数不会调用 Game 的构造函数,因此您传入的参数将被忽略。尝试在原始对象上运行 println() 语句;你会得到相同的空值输出。解决这个问题,序列化就可以正常工作。
关于Java : Serializable not working to save Object's states,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17823597/