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…
Mas vc pode setar esse objeto como nulo e criar uma nova instância dele qnd quiser utilizá-lo novamente sem utilizar os valores antigos…
ajudei? :roll:
viniciusfaleiro
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…
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…
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
D
ddso
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
então, mas aí ele vai criar uma nova instancia, nao???
thundercas
Sim, a instância anterior será substituida por uma nova, a qual respeitará as definições do construtor…
Não é isso que você quer??
marcosvidolin
olá
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
D
ddso
marcosvidolin:
olá
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
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?
pablosaraiva
dsavia:
marcosvidolin:
olá
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
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?
Quando você cria um objeto do jeito que você criou, ele já está apontando pra null.
Objectwvariavel;
Você precisa instanciar o objeto para que efetivamente ocupe espaço na memória e tenha uma referência.
Objectwvariavel=newObject();
E depois, se for o caso, pode apontar para null como você fez.
wvariavel=null;
edmarr
Vc n zera um objeto apenas ele deixa de referenciar , exemplo
Carcarro=newCar();
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 .
H
henriquemb
É 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.