Relacionametos do tipo um-para-muitos

6 respostas
neofito

Bom dia galera.

Estou com uma dúvida no código a seguir:

[color=green]

class Rock {

Rock() { // This is the constructor

System.out.println(Creating Rock);

}

}
public class SimpleConstructor {

static Test monitor = new Test();

public static void main(String[] args) {

for(int i = 0; i < 10; i++)

new Rock();

}

} ///:~[/color]

Ele cria várias instâncias da classe Rock. Mesmo depois do término do laço, as instâncias continuam existindo? E se continuarem, como faço pra que uma classe se comunique (uma ligação) com elas (um relacionamento um-para-muitos em UML, eu acho)?

Obrigado… :wink:

6 Respostas

_fs

Você não teria que atribuir as instâncias da classe a algum objeto para poder se comunicar com eles? Por exemplo colocar dentro de um array

neofito

Lipe, até aí td bem…
Mas e se eu não souber o número de instâncias que preciso? Eu gostaria de fazer um mecanismo que me provesse de instâncias de acordo com a minha necessidade. E afinal, depois do laço as instâncias continuam ou não a existir? :wink:

D

Esse exemplo que você postou parece típico do livro TIJ de Bruce Eckel.
Na verdade, nesse exemplo, você deve reparar que ele não cria referências para os objetos Rock(). Ele usa apenas a construção new Rock() sem atribuir o objeto criado a um “ponteiro”.

Sendo assim, o GC (garbage collector), se tiver tempo, fará a liberação de memória para instâncias de classes que não sejam referenciadas.

Respondendo: sim as instâncias das classes criadas existem. Mas não existem referências para elas. Portanto, serão eliminadas da memória assim que for possível pelo GC.

cv1

Entao vc sabe o numero de instancias que vc precisa (afinal, vc tem uma necessidade, nao?) ueh :smiley:

Se uma arvore cai numa floresta, e nao ha ninguem pra ver, ouvir ou sentir o estrondo, a arvore caiu?

Se uma instancia de um objeto eh criada num metodo, e ela nao foi atribuida a nenhuma variavel ou referencia, a instancia existe? :smiley:

Resposta: sim, ela existe, mas vc nao tem como usar pq vc nao tem nenhuma referencia `aquela instancia. :wink:

leonardom

“neófito”:

Lipe, até aí td bem…
Mas e se eu não souber o número de instâncias que preciso? Eu gostaria de fazer um mecanismo que me provesse de instâncias de acordo com a minha necessidade. E afinal, depois do laço as instâncias continuam ou não a existir? :wink:

Você pode guardar esses objetos dentro de um collection, por exemplo um ArrayList.

ArrayList lista = new ArrayList();

for(int i = 0; i < 10; i++)
{
    lista.add( new Rock() );
}

Os as instâncias continuam a existir enquanto o garbage collection não coletar esses objetos, mas você não tem como acessa-los pois não possui uma referencia para eles. Se colocar e uma collection você tem acesso a esses objetos.

neofito

Beleza Leonardo, era +/- isso o que eu queria. Já deu pra ter uma idéia melhor de como o Java trabalha… :turn-l:

Criado 9 de janeiro de 2004
Ultima resposta 9 de jan. de 2004
Respostas 6
Participantes 5