Oi gente, na segunda classe aqui postada, ao invés de imprimir os tipos dos objetos só imprime null, olha que eu copiei tal e qual está no livro Head Java First. Alguém saberia resolver esse mistério??
package exemplos;
import java.io.*;
public class GameCharacter implements Serializable{
int power;
String type;
String [] weapons;
public GameCharacter (int power, String type, String [] weapons){
power = power;
type = type;
weapons = weapons;
}
public int getPower(){
return power;
}
public String getType(){
return type;
}
public String getWeapons(){
String weaponList = "";
for(int i = 0; i < weapons.length; i++){
weaponList += weapons[i] + "";
}
return weaponList;
}
}
package exemplos;
import java.io.*;
public class GameSaverTest {
public static void main(String[] args) {
GameCharacter one = new GameCharacter(50, "Elf", new String [] {"bow", "sword", "dust"});
GameCharacter two = new GameCharacter(200, "Troll", new String [] {"bare hands", "big ax"});
GameCharacter three = new GameCharacter(120, "Magician", new String [] {"spells", "invisibility"});
//Código que faz coisas com os personagens que podem alterar os valores de seu estado
try{
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("GameCharacter.ser"));
os.writeObject(one);
os.writeObject(two);
os.writeObject(three);
os.close();
}catch(IOException e){
e.printStackTrace();
}
one = null;
two = null;
three = null;
try{
ObjectInputStream is = new ObjectInputStream(new FileInputStream("GameCharacter.ser"));
GameCharacter oneRestore = (GameCharacter) is.readObject();
GameCharacter twoRestore = (GameCharacter) is.readObject();
GameCharacter threeRestore = (GameCharacter) is.readObject();
System.out.println("One's type: " + oneRestore.getType());
System.out.println("Two's type: " + twoRestore.getType());
System.out.println("Three's type: " + threeRestore.getType());
}catch(Exception e){
e.printStackTrace();
}
}
}