package Armas;
public class Espadas {
public String Nome;
}
entao marquei como transient a variavel e tentei sobrescrever... tentando gravar um novo valor para o objeto espada porem nao sei o que colocar no metodo readObject quando ele deserializar observem que esta marcado com um "?" pois se deixo sem parametros recebo uma
java.io.InvalidClassException: Jogador.Jogador; local class incompatible: stream classdesc serialVersionUID = -2610492869798172933, local class serialVersionUID = -8056634493202695915
at java.io.ObjectStreamClass.initNonProxy(Unknown Source)
at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
at java.io.ObjectInputStream.readClassDesc(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at Game.Loader.main(Loader.java:16)
package Jogador;
import Armas.*;
import java.io.*;
public class Jogador implements Serializable{
private void writeObject(ObjectOutputStream o){
try {
o.defaultWriteObject();
o.writeObject(new Espadas().Nome="teste");
} catch (IOException e) {
e.printStackTrace();
}
}
private void readObject(ObjectInputStream o){
try {
o.defaultReadObject();
espada=(Espadas)o.readObject(?);
} catch (Exception e) {
e.printStackTrace();
}
}
public String nome;
public transient Espadas espada=new Espadas();
public Machados machado=new Machados();
}
classe que salva
package Game;
import Jogador.*;
import java.io.*;
public class Salva {
static void setPlayer(Jogador p1){
p1.nome="Bruno";
p1.espada.Nome="Espada de Fogo";
p1.machado.Nome="Machado de Agua";
}
public static void main(String[] args) {
Jogador p1=new Jogador();
setPlayer(p1);
try{
FileOutputStream salva=new FileOutputStream("jogador.bdm");
ObjectOutputStream salvador=new ObjectOutputStream(salva);
salvador.writeObject(p1);
salvador.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
estou fazendo leitura com
podem ajuda?