Serializaçao livro kathy sierra

1 resposta
Diabo_Loiro
Estava estudando quando me deparei com a situaçao de querer marcar uma variavel como transient... e sobrescrever os metodos writeObject e readObject la no livro tem uma implementaçao de exemplo com tipois primitivos.. no caso ele chama o defaultWriteObject e depois um writeInt() depois para deserializar ele usa o readInt ate ai tudo bem tudo funciona... porem fui tenta fazer a mesma coisa com objetos vejao classe espada nao serializada
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)
classe jogador
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?

1 Resposta

Diabo_Loiro

alguem??? por favor?

Criado 2 de julho de 2009
Ultima resposta 2 de jul. de 2009
Respostas 1
Participantes 1