Pessoal, estou com uma duvida que creio ser simples, mas não consegui resolver mesmo fazendo buscas…
Como “zerar” um objeto? Digo, como fazer para limpar todas os valores que foram inseridos nele?
Estou com uma aplicação que só consigo utilizar uma vez. Se eu tentar utilizar a segunda vez, os objetos permanecem com o valor que foi atribuido a eles… sou obrigado a fechar o aplicativo e abrir novamente pra conseguir resolver…
Cara… como funciona essa aplicação… é swing?? web??? do que se trata? às vezes deve ser algum conceito aplicado errado… Se puder colocar o código de algo ai se não for mto grande … já da pra termos noção…
Carro car = new Carro();
car.setCor("Azul");
System.out.println(car.getCor()); // Imprime "Azul"
car = new Carro();
System.out.println(car.getCor()); // Imprime VAZIO.
[quote=dsavia]Pessoal, estou com uma duvida que creio ser simples, mas não consegui resolver mesmo fazendo buscas…
Como “zerar” um objeto? Digo, como fazer para limpar todas os valores que foram inseridos nele?
Estou com uma aplicação que só consigo utilizar uma vez. Se eu tentar utilizar a segunda vez, os objetos permanecem com o valor que foi atribuido a eles… sou obrigado a fechar o aplicativo e abrir novamente pra conseguir resolver…[/quote]
Depende do que vc quer fazer. Se vc precisa manter referências a estes objetos e só quer alterar o estado deles para algo “zerado” seria interessante vc estudar o padrão State e, de alguma forma, enviar uma mensagem a todos os objetos para que os mesmos sejam “zerados” (talvez Observer possa ajudar). Entretanto se for o caso de fazer algo mais simples, deixe que o Garbage Collector se encarregue dos objetos antigos e crie os objetos novamente
[quote=thundercas]
Carro car = new Carro();
car.setCor("Azul");
System.out.println(car.getCor()); // Imprime "Azul"
car = new Carro();
System.out.println(car.getCor()); // Imprime VAZIO.
abs
[/quote]
então, mas aí ele vai criar uma nova instancia, nao???
quando criado um objeto somente a JVM através do GC pode excluir o objeto.
Você pode é passar “null” para a variável de referencia do objeto ou então alterar os atributos do objeto.
quando criado um objeto somente a JVM através do GC pode excluir o objeto.
Você pode é passar “null” para a variável de referencia do objeto ou então alterar os atributos do objeto.
[]'s[/quote]
o que é variavel de referencia?
por exemplo, eu instanciei ela assim
Object wvariavel;
daí ela foi valorizada, etc…
pra volta-la ao estado original, seria:
quando criado um objeto somente a JVM através do GC pode excluir o objeto.
Você pode é passar “null” para a variável de referencia do objeto ou então alterar os atributos do objeto.
[]'s[/quote]
o que é variavel de referencia?
por exemplo, eu instanciei ela assim
Object wvariavel;
daí ela foi valorizada, etc…
pra volta-la ao estado original, seria:
wvariavel = null;
é isto?[/quote]
Quando você cria um objeto do jeito que você criou, ele já está apontando pra null.
Object wvariavel;
Você precisa instanciar o objeto para que efetivamente ocupe espaço na memória e tenha uma referência.
Object wvariavel = new Object();
E depois, se for o caso, pode apontar para null como você fez.
Vc n zera um objeto apenas ele deixa de referenciar , exemplo
Car carro = new Car();
Deste jeito ele criou um objeto na memória para deixar de usar este objeto basta fazer isto
carro = null;
Porem ainda existira uma variavelmente na jvm so que nao referencia nenhum objeto ou seja
mesmo assim o GC sera executado somente quando a JVM sentir necessidade .
É mais prático criar uma nova instância toda vez. Java é uma lingüagem que trabalha com referências, ou seja, se você atribuir uma nova instância para uma variável que já possui uma referência, essa referência será substituída. E caso essa instância antiga não possua nenhuma variável apontando para ela, ela será marcada pelo GC para ser removida.
Agora vendo um exemplo para simplificar:
//Cria uma instância de carro para a variável carro;
Carro carro = new Carro();
//setando os atributos
carro.setMarca("xxxx");
carro.setCor("verde");
//Agora se você criar uma nova instância para a variável carro, o carro antigo perderá sua referência e posteriormente será removido pelo GC
carro = new Carro();