Jump to content

Redefinição do método clone() [Resolvido]


jamirooo
 Share

Recommended Posts

Boa noite,

Na documentação que tenho disponível é-me dito o seguinte:

"Se o objeto apenas contiver tipos primitivos como seus

campos de dados, é preciso

1. Declarar que a classe implementa Cloneable

2. Sobrepor clone() e invocar o método Object.clone() que faz uma copia bit-wise dos atributos do objeto."

A minha dúvida é, será que a String está "metida" nos tipos primitivos referidos neste excerto? Ou será que quando redefino o método clone tenho de ter os atributos String em atenção e "clonálos indivudualmente"?

Obrigado desde já.

Link to comment
Share on other sites

1º precisas do super.clone() (chama o close do object sobre o proprio objecto)

2º Copias/clonas todos os atributos do objecto.

Uma string é um objecto e, no java, não é um primitivo.

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Link to comment
Share on other sites

Quanto à parte de chamar o super.clone() da classe Object sobre o objecto que quero clonar, sim tens razão. Mas ao fazê-lo tudo o que seja tipos primitivos, o clone da classe Object, já se encarrega de os clonar. Mas por exemplo se eu tiver um vector de int's, tenho de ter o cuidado de cloná-lo também, pois corro o risco de ter dois objectos a apontarem para o mesmo array...

A minha dúvida é se devo ter o cuidado de clonar as Strings individualmente, talvcomo os vectores, ou será que as Strings, tal como os int's, double's, etc, são clonados automaticamente com o clone() da classe Object?

Espero ter-me feito entender... 👍

Obrigado.

Link to comment
Share on other sites

As Strings são objectos especiais. São imutáveis, o que implica que, mesmo que tenhas várias referências para a mesma String, nunca consegues que essas referências afectem de forma maliciosa a string para a qual apontam. Além disto, a classe String tem o método clone re-implementado.

Portanto, dada a natureza das Strings, não precisas de explicitamente clonar as strings que tenhas na tua classe.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.