Len*_*nny 1 java arrays constructor serializable
我是Java的新手,遇到了这个问题:我正在学习如何将对象状态保存到文件中,并且因为将数组传递给构造函数而陷入困境.我相信问题是构造函数的基类,但我不确定.
这是我的英雄课:
import java.io.Serializable;
public class Hero implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private int power;
private String type;
private String[] wepons;
public int getPower() {
return power;
}
public void setPower(int power) {
this.power = power;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String[] getWepons() {
return wepons;
}
public void setWepons(String[] wepons) {
this.wepons = wepons;
}
public Hero(int powerH, String typeH, String[] weponsH) {
this.power = powerH;
this.type = typeH;
this.wepons = weponsH;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试用来保存对象状态的类:
import java.io.*;
public class SaveGame {
public static void main(String[] args) {
Hero hero1 = new Hero(50, "Elf", new String[] {"bow", "short sword", "powder"});
try{
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("Game.ser"));
os.writeObject(hero1);
os.close();
} catch (IOException ex) {
ex.printStackTrace();
}
ObjectInputStream is;
try {
is = new ObjectInputStream(new FileInputStream("Game.ser"));
Hero p1N = (Hero) is.readObject();
System.out.println(p1N.getPower() + " " + p1N.getType() + " " + p1N.getWepons());
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
你能告诉我并解释我做错了什么.我是否真的需要在我的英雄课程中使用限制器和吸气器,我觉得我使用它们不正确.
我的问题是,当我试图打印出Hero的参数时,我得到了数组的内容而不是数组的字符串表示.感谢user2336315我现在知道在打印数组内容时应该使用Arrays.toString方法
我运行你的代码,一切似乎都很好.唯一的问题是你想要打印数组本身的内容,而不是数组本身的字符串表示.所以使用Arrays.toString:
System.out.println(p1N.getPower() + " " + p1N.getType() + " " + Arrays.toString(p1N.getWepons()));
Run Code Online (Sandbox Code Playgroud)
输出:
50 Elf [bow, short sword, powder]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2056 次 |
| 最近记录: |