Classe já instanciada

11 respostas
L

É possível saber se determinada classe já foi instanciada ou não, em tempo de execução?
Obrigado.

11 Respostas

A

dá uma clareada na pergunta :stuck_out_tongue: ficou meio confusa…

vc precisa saber se o objeto q vc quer usar está null ou nao?

se for isso basta um if(objeto != null) {} ou entao um try {} catch(NullPointerException){}

L

Eu tenho uma classe que só pode ser instanciada uma única vez, então em determinado momento em outra classe (a que cria ela) precisa saber se já foi instanciada ou não.

L

lzs,

o que o andrerios escreveu é a solução para tua dúvida:

if (obj != null) { //teu código aqui }

Abraço

M

Adiciona um flag estatico na sua classe:

class InstanciaUnica{
	private static boolean instanciada = false;
	
	public InstanciaUnica() {
		if(instanciada){
			throw new RuntimeException("Essa classe pode ser instanciada apenas uma vez");
		}
		
		instanciada = true;
	}

	public static boolean isInstanciada(){
		return instanciada;
	}
}

class Criadora{
	public Criadora(){
		if(!InstanciaUnica.isInstanciada()){
			new InstanciaUnica();
		}

		new InstanciaUnica();
	}
}

Ou você pode criar um “getInstance”

class InstanciaUnica {

	// Essa vai ser a sua unica instancia dessa classe
	private static InstanciaUnica instancia;

	// Detalhe no construtor privado
	private InstanciaUnica() {
		// ações do construtor
	}

	public static InstanciaUnica getInstance(){
		if(instancia == null){
			instancia = new InstanciaUnica();
		}
		
		return instancia;
	}
}

class Criadora{
	public Criadora() {
		InstanciaUnica instancia1 = InstanciaUnica.getInstance();
		
		InstanciaUnica instancia2 = InstanciaUnica.getInstance();
		
		if(instancia1 == instancia2){
			System.out.println("são a mesma instancia :)");
		}else{
			System.out.println("não são a mesma instancia :(");
		}
		
		System.exit(0);
	}
	
	public static void main(String[] args) {
		new Criadora();
	}
}
B

Olá, conhece o padrão Singleton?

pesquise sobre ele…é bem simples…e vai resolver seu problema…

[]'s

A

kras ele parece q está começando (sen nao me perdoe) e usar o basico no comeco é melhor… sobre singleton ja houve discussoes sobre ele aki no guj e ele é altamente NAO recomendado

http://www.guj.com.br/posts/list/65924.java

abraco!

L

Obrigado Big E era exatamente isso que eu precisava!

B

andrerios

humm legal cara, tem razão se tiver começando é bom se familiarizar com a linguagem antes…
mas diz ae andrerios, pq a não recomendação do padrão?

A

é q singleton é mais pra qdo vc precisa q na aplicacao só tenha 1 e apenas 1 objeto dakele que vc está instanciando e nao para verificar se o objeto está instanciado ou nao

B

Mas pelo que ele descreveu, o singleton é o mais adequado mesmo.

B

vi as discussões sobre singleton…parece ser bastante odiado…hehehe

de acordo com essa informação o singleton se adequa a isso…
mas foi legal ver as discussões…vou prestar mais atenção onde implemento esse padrão…

valeu galera

[]'s

Criado 20 de janeiro de 2009
Ultima resposta 20 de jan. de 2009
Respostas 11
Participantes 6