É possível saber se determinada classe já foi instanciada ou não, em tempo de execução?
Obrigado.
Classe já instanciada
11 Respostas
dá uma clareada na pergunta
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){}
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.
lzs,
o que o andrerios escreveu é a solução para tua dúvida:
if (obj != null) {
//teu código aqui
}
Abraço
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();
}
}
Olá, conhece o padrão Singleton?
pesquise sobre ele…é bem simples…e vai resolver seu problema…
[]'s
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!
Obrigado Big E era exatamente isso que eu precisava!
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?
é 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
Mas pelo que ele descreveu, o singleton é o mais adequado mesmo.
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