Oi pessoal,
somente um ponto voce esqueceu de falar. A interface Cloneable nao
possui metodo nenhum. Ela, como a interface Serializable, eh usada somente
para marcar uma classe, estabelecendo o "contrato" (e isso eh um Design
Pattern).
Em qualquer classe, mesmo que ela nao implemente a interface
Cloneable, voce pode escrever um metodo que copie o objeto atual e retorne
a copia. Acontece que se voce for usar o metodo clone da classe Object,
voce *deve* fazer com que sua classe implemente a interface Cloneable,
pois a implementacao do metodo clone na classe Object requer essa
interface implementada (como disse anteriormente, somente como marcacao).
Resumindo: eh desejavel que voce implemente a interface Cloneable,
mas nao eh obrigatorio. A obrigatoriedade advem do fato de voce usar o
metodo clone da classe Object (super.clone), que requer essa interface
implementada.
Abracos,
Bruno.
On Tue, 18 Jul 2000, Tetsuo wrote:
> Cloneable eh uma interface, isto eh, contem apenas uma declaracao padrao
> para o metodo clone(). Para obter uma copia do objeto, vc tem que criar uma
> nova instancia do objeto, com os mesmos atributos do objeto original. Isto
> geralmente eh feito implementando-se a interface Cloneable, para manter uma
> padronizacao (ie, vc pode juntar objetos completamente diferentes, mas que
> implementam a interface Cloneable, num array do tipo Cloneable[]), mas isto
> nao eh obrigatorio.
>
> Exemplo:
>
> public class DollyLabel extends Label implements Cloneable {
> private int id; // atributo privado sem acesso direto por metodos
> 'set'
>
> public DollyLabel(String tex) {
> super(tex);
> }
>
> ...
>
> public Object clone() {
> DollyLabel dolly = new DollyLabel(this.getText());
> dolly.id = this.id; // Isso pode ser feito, pois este objeto eh
> da mesma classe que dolly
> return (Object)dolly; // Este cast eh feito automaticamente, mas
> eh preciso fazer outro
> // cast para usar dolly como DollyLabel!
> }
> public DolllyLabel dollyClone() {
> DollyLabel dolly = new DollyLabel(this.getText());
> dolly.id = this.id;
> return dolly; // Este clone nao necessita de cast, pois ja
> retorna do tipo DollyLabel
> }
> }
>
>
>
> ----- Original Message -----
> From: Javanes <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Cc: <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>;
> <[EMAIL PROTECTED]>; DANIEL VIEIRA VIVEIROS
> <[EMAIL PROTECTED]>
> Sent: Tuesday, July 18, 2000 10:07 AM
> Subject: Re: [SouJava-J] Copias de objetos
>
>
> > Eu tentei usar a classe clonable mas não tive sucesso.
> > Alguém tem algum código que exemplifique a utilização do clone ????
> > Obrigado.
> >
> > Fabio Rodrigues - Telematica wrote:
> > >
> > > DANIEL VIEIRA VIVEIROS wrote:
> > >
> > > > Oi,
> > > >
> > > > Como faco para criar objetos identicos sem que eles compartilhem o
> mesmo
> > > > endereco de memoria ?
> > > >
> > > > Obrigado,
> > > > Daniel
> > > >
>
>
> --------------------------- LISTA SOUJAVA ---------------------------
> http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
> [dúvidas mais comuns: http://www.soujava.org.br/faq.htm]
> [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
> [regras da lista: http://www.soujava.org.br/regras.htm]
> ---------------------------------------------------------------------
>
______________________________________________________________
Bruno Diniz de Paula
[EMAIL PROTECTED] - UFMG
"Coracoes ao alto e pes no chao."
"A verdadeira experiencia com Deus nao nos faz
fugir da realidade, mas nos da forcas para
enfrenta-la e transforma-la."
Pe. Zeca
--------------------------- LISTA SOUJAVA ---------------------------
http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
[dúvidas mais comuns: http://www.soujava.org.br/faq.htm]
[para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
[regras da lista: http://www.soujava.org.br/regras.htm]
---------------------------------------------------------------------