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

andrerios

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.Bach

lzs,

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

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

Abraço

Mikhas

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();
	}
}
Big_E

Olá, conhece o padrão Singleton?

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

[]'s

andrerios

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!

Big_E

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?

andrerios

é 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

bruno.leite

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

Big_E

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