gpt4 book ai didi

Java : Serializable not working to save Object's states

转载 作者:行者123 更新时间:2023-12-01 08:10:33 25 4
gpt4 key购买 nike

我正在尝试使用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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com