Pessoal, estou tendo problemas em desserializar um objeto… Mas especificamente, em acessar seus atributos. Alguem pode me ajudar ?
Data.class:
public class Data implements Serializable {
private static byte sequenceNumber[] = new byte[4];
private static byte ACK[] = new byte[4];
private static byte connectionID[] = new byte[2];
private static byte notUsed[] = new byte[2];
public Data(int seq, int ack, int id, int used) {
sequenceNumber[3] = seq;
ACK[3] = ack;
connectionID[1] = id;
notUsed[1] = used;
}
//getters e setters
...
}
Cliente.class:
private void converteObjetoEmByte() throws Exception {
//criando objeto da classe Data
Data objeto = new Data(123456, 0, 0, 2);
byte bytes[] = null;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream( baos );
oos.writeObject( objeto );
oos.flush();
oos.close();
baos.close();
bytes = baos.toByteArray();
//enviando objeto
DatagramSocket pacote = new DatagramSocket(
bytes,
bytes.length,
//endereço do servidor
//porta
);
}
Servidor.class
//os bytes do pacote(objeto) foram recebidos
byte bytesDoPacote[] ;
Data objetoDesserializado;
ByteArrayInputStream bais = new ByteArrayInputStream( bytesDoPacote );
ObjectInputStream ois = new ObjectInputStream( bais );
objetoDesserializado = ois.readObject();
objectIS.close();
byteArrayIS.close();
//O erro ocorre ao acessar os atributos
//Não importa o valor colocado antes da serialização,
//apos desserializar, o campo fica com 0
objetoDesserializado.getACK() == 0;
Pra resumir, vou explicar oq se passa nos trechos de código acima. Tenho uma classe Data, a qual será serializada.
A classe Cliente q cria um objeto da classe Data, transforma em bytes e envia a um servidor.
A classe Servidor por sua vez, recebe os bytes e transforma o objeto(desserializa) mas ao acessar o atributos do objeto desserializado, eles contem valor nulo mesmo sendo setados antes de serializar. Alguem pode me ajudar a entender o porque ?!