[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

RE: Serializacao de objetos novamente....



Nelson Guedes Paulo Junior writes:
 > Quando vou utilizar o metodo writeObject da classe Buffer, devo passar
 > entre outras coisas um tamanho máximo para o objeto. Qual seria esse
 > valor, ou melhor, qual seria um bom valor para um objeto da classe
 > Class? Como posso estimar qual valor devo colocar para outros objetos?

Em vez de tentar estimar o tamanho do objeto, a idéia é passar no
maxCount o espaço disponível na página na qual o objeto vai ser escrito.

Você provavelmente está chamando writeObject() de dentro do método
writeTo() de algum DBObject. O método HFPage.insertRecord(), quando
chama writeTo() para escrever um DBObject objeto na página, cuida de
passar ao writeTo() o espaço disponível na página. Se dentro desse
writeTo() voce escrever uma chamada writeObject(), repasse ao
writeObject() o espaço disponível, menos o espaço tomado por outros
writes que você fez antes desse writeObject().

 > Existe algum operador do tipo do sizeof do C em Java?

Não.

 > É garantido que pro tamanho de página atual eu não vou tentar escrever
 > alguma instancia da classe Class que seja maior que o buffer ou que não
 > caiba junto com outros campos pertencentes aquele DBObject, por exemplo,
 > quando implemento uma classe que implementa a interface DBObject para
 > serializar os campos do diretorio de paginas (String/Class/Ponteiro para
 > a pagina) pode acontecer de em nenhuma pagina, mesmo uma vazia, caber um
 > resgistro desse tipo? 

Não há essa garantia. Mas é muitissimo pouco provável que isso
ocorra. Para um registro String/Class/Ponteiro não caber numa página
de 4K vazia a String teria que ser muito longa.

>  Devemos tratar este tipo de coisa por exemplo
 > tentando "quebrar" o registro em partes e distribuilas em várias páginas
 > ou simplesmente lançemos uma excessão e no caso não teremos como tratar
 > este tipo de coisa?

Não tente quebrar o registro. Lance uma exceção e pronto.

 > Quando eu gravo algum objeto da classe Class, o que
 > na verdade esta sendo gravado em disco? Seria algum indentificador de
 > arquivo que indentificasse o .class em disco que representa aquele
 > objeto?

Sim, um Class serializado inclui o nome completo da classe (a partir do
qual o JDK pode encontrar o arquivo .class no classpath) codificado de
uma forma esquisita, mais um identificador de versão da classe.

Reverbel