Duvida Serialização

15 respostas
alberto_ribeiro

Segue a pergunta:

Class Car implements Serializable{ }

Class Ford extends Car{ }

Caso você tente serializar uma instância Ford, atual será o resultado?

A ? Ocorrerá erro de compilação.

B ? Nenhum objeto será serializado

C ? Dois objetos serão serializados.

D ? Uma exceção será lançada, em tempo de execução.

[]'s

15 Respostas

T
a)  vai haver erro de compilação se for Class, não class. Como era o exercício original?

b) Um objeto será serializado (classe Ford)

c) Um objeto será serializado (classe Ford)

d)  seria lançada a exceção se a classe não implementar Serializable.
T

Eis um exemplo para você ver, na prática, como é a tal da Serialização de objetos.

import java.io.*;

class Car implements Serializable {
}

class Ford extends Car {
}

class TesteSerializacao {
    public static void main(String[] args) throws Exception {
        ObjectOutputStream oos = new ObjectOutputStream (new FileOutputStream ("objeto.binario"));
        Car car = new Ford();
        oos.writeObject (car);
        oos.close();
        ObjectInputStream ois = new ObjectInputStream (new FileInputStream ("objeto.binario"));
        Car meuCarro = (Car) ois.readObject();
        oos.close();
        System.out.println ("Classe do objeto lido : " + meuCarro.getClass().getName());
    }
}
LPJava

alberto_ribeiro:
Segue a pergunta:

Class Car implements Serializable{ }

Class Ford extends Car{ }

Caso você tente serializar uma instância Ford, atual será o resultado?

A ? Ocorrerá erro de compilação.

B ? Nenhum objeto será serializado

C ? Dois objetos serão serializados.

D ? Uma exceção será lançada, em tempo de execução.

[]'s

dois objetos sera serializado…
Regra - se sua superclass implements serializable entao todas as subclasses tb será… serializable ja que a subclass é filho… da super entao tudo que a pai… faz a sub tb faz… por isso… o inverso seria apenas 1 objeto serializado.

alberto_ribeiro

a resposta é B… nao sei porque…

R

acho que o thingol observou bem… tem 2 opções de resposta:

  1. ou dá erro de compilação (se a questão original define a classe com “Class” ao invés de “class”).
  2. ou então apenas um objeto será serializado (e, no caso, não teria nenhuma resposta pra marcar).
alberto_ribeiro

mais por exemplo se você serializar Ford somente ele será serializado porque dentro de Ford não tem nenhuma instancia de Car, certo ???

esse class é erro de digitação, desculpe - me… :frowning:

eu achava que essa seria 2 objetos…

Omeganosferatu

De onde voce tirou essa questao ?

alberto_ribeiro

esse aqui:

Livro Certificação Java 5 guia preparatório Exame CX-310-055

Roberto Rubinstein Serson

LPJava

olha o que eu conseguir deduzir do livro da kathy…

se sua class PAI, implementar Serializable então a sua subclasse implicitamente já faz serializable.
Agora se sua classe PAI, não implementa Serializable e sua subclasse implementa então apenas os objetos da sua subclasse vamos serializar o da class PAI infelizmente terá seus valores iniciais ou padrão

alberto_ribeiro

Entao CamiloLopes isso já é entendido, porém a duvida naquela pergunta é quantos objetos serão serealizados quando uma instancia de Ford for serealizada ? e não quantos objetos são serializable…

[]'s

LPJava

eu marcaria letra C.

alberto_ribeiro

eu tb havia pensado nessa… mas pelo que o thingol falou é 1 apenas e nao tem a resposta :frowning:

glaucioguerra

alberto_ribeiro:
a resposta é B… nao sei porque…

E qual foi a explicação que o autor deu? Simplesmente disse letra B e pronto? Geralmente eles dizem o porquê da resposta.

Um abraço!

alberto_ribeiro

Então eu peguei no livro e ele dizia a mesma coisa que o camilolopes disse: Quando uma super classe é serializable e alguma classe extends ela as duas são serializable… essa explicação do livro está certa, porém, acho que não condiz com a resposta.

[]'s

glaucioguerra

Mais uma questão para as erratas :wink:

Um abraço!

Criado 15 de junho de 2007
Ultima resposta 17 de jun. de 2007
Respostas 15
Participantes 6