Construtor vazio

10 respostas
Metal_Java_Full
Criei um construtor vazio na minha aplicaçao e quis inicializar um objeto seu para chamar um metodo da sua classe...
public Construtor(){
}

//em outra classe
Construtor c  = new Construtor()
c.umMetodoQualquer();

Na classe Construtor já tem outro construtor parametrizado!!
Só que qando compilo diz q a variavel c está nula!!

Alguma soluçao?????

10 Respostas

WendersonLP

E porque você está querendo instanciar um objeto da própria classe?
É algo obrigatório ou necessário para sua aplicação?

vitor_lima

Eu acho que ele não está querendo …

diego.urban
Metal Java Full:
Criei um construtor vazio na minha aplicaçao e quis inicializar um objeto seu para chamar um metodo da sua classe...
public Construtor(){
}

//em outra classe
Construtor c  = new Construtor()
c.umMetodoQualquer();

Na classe Construtor já tem outro construtor parametrizado!!
Só que qando compilo diz q a variavel c está nula!!

Alguma soluçao?????

Somente com essas informações fica difícil ajudar.

Poste o stack trace, como também o código-fonte.

Obrigado.

Metal_Java_Full

WendersonLP:
E porque você está querendo instanciar um objeto da própria classe?
É algo obrigatório ou necessário para sua aplicação?

Como está definido no meu exemplo, o objeto está em outra classe!!!
É pq eu precisso acessar um método de uma classe (Principal, por exemplo) na classe Agenda!
Para isso eu tenho q instanciar um objeto Principal…

Principal p = new Principal(); p.umMetodoQualquer();
… para depois acessar um método de Principal dentro de Agenda!!

Só q Principal já tem um construtor q inicializa algumas variaveis:

Principal(int num){ this.num = num; }

Portanto, nao me deixa instanciar um novo construtor a nao ser q eu mande um interio pra ele, e nao qeria fazer isso todas as vezes…

alguma sugestao?!

tinorberto

ainda ñ entendi o que vc quer fazer.

Metal_Java_Full

É o seguinte: eu tenho duas classes: uma “Principal” e uma “Agenda”!!
Na classe Principal eu tenho uma variavel “num”, um construtor q a inicializa e um metodo:

class Principal{ int num; Principal(int num){ this.num = num; } public void umMetodoQualquer(){ ... }

Na classe Agenda eu gostaria de acessar esse metodo qualquer, e para isso teria de instanciar um objeto nela mesma:

class Agenda{ Principal p = new Principal(); }

para depois acessar o metodo:

p.umMetodoQualquer()

O problema é q ele nao aceita q eu instancie o objeto, pq o construtor de Principal precisa de um argumento!
Só q eu nao qeria mandar um inteiro pro construtor de Principal toda vez q eu instaciasse um objeto…
Tentei criar um construtor vazio

Principal(){ //vazio }
Mas ele tbm nao deixa!!

alguem?!

diego.urban

No construtor que recebe o parâmetro, você está instanciando algum outro objeto?

Se sim, nesse “umMetodoQualquer” você está chamando algum método desse objeto instanciado nesse construtor com parâmetro?

ViniGodoy

Se você tem um construtor que recebe parâmetros, o Java eliminará o construtor que não recebe. PAra corrigir o problema, você deve definir no braço um construtor vazio.

class Principal{  
   private int num;  
   public Principal(int num){  
      this.num = num;  
   }  
   public Principal() {
      this(0); //Chama o outro com um valor padrão para num
   }

   public void umMetodoQualquer(){  
      ...  
   }  
}

Como seu construtor com parâmetros inicializa a classe, o Java não pode criar um construtor em branco, pois isso envolveria "deduzir" valores padrão. Lembre-se, sempre que um construtor diferente do padrão for definido, o construtor padrão não será automagicamente criado.

mario.fts

se já existe um construtor que recebe parametros, vc deve usar ele. se não existe, vc deve criar um. O Java só cria um construtor sem parametros se vc não definir nenhum, se vc definir um construtor o java não cria o padrão

Metal_Java_Full

agora deu certo!!
Vlew galera!! :!: :!: :slight_smile:

Criado 8 de dezembro de 2009
Ultima resposta 8 de dez. de 2009
Respostas 10
Participantes 7