Inicializar vetor de objetos dentro de um construtor [Resolvido]

7 respostas
J

Galera, como posso inicializar um vetor dentro de um construtor?
imaginem o cenário seguinte:

tenho uma classe X.
uma classe Y que cria um vetor de x

public class Y{
    int param1;
    int param2;
    X[] param3;

    // este é o construtor, mas o vetor não é passado como parâmetro
    public Y(int param1, int param2){
        this.param1 = param1;
        this.param2 = param2;
        
        //aqui eu deveria preencher o vetor com um valor inicial
        // mas como fazer isso?
    }

       // aqui existem dois métodos que precisam enxergar o vetor

       método1 modificaVetor(int z, int w){
            // aqui é informado o tamanho do vetor
            param3 = new X[z + w];
       
       }

      método2 percorreVetor(){
            // aqui preciso percorrer o vetor inteiro
      }
}

Como posso inicializar esse vetor no construtor? se eu fizesse um setX e chamasse ele no construtor, como ele deveria ser?

7 Respostas

P

Olá,
você quer inicializar apenas para não ficar null?

Daí é só fazer isso:

X[] teste = new X[10];

Ah, você precisa saber o tamanho do vetor…

J

paquino:
Olá,
você quer inicializar apenas para não ficar null?

Daí é só fazer isso:

X[] teste = new X[10];

Ah, você precisa saber o tamanho do vetor…

Então paquino, só que eu recebo o tamanho exato do vetor só lá em baixo… não na hora que crio o objeto

JonaTHANNM

quando esta classe for instanciada ele já vai preencher este vetor com os valores…

public class Teste {
	
	int vetor[];
	
	public Teste(){
		
		vetor = new int[] {1,2,3,4,5};
		
	}

}
nel

josueigs:
paquino:
Olá,
você quer inicializar apenas para não ficar null?

Daí é só fazer isso:

X[] teste = new X[10];

Ah, você precisa saber o tamanho do vetor…

Então paquino, só que eu recebo o tamanho exato do vetor só lá em baixo… não na hora que crio o objeto

Oi!

Porque tu só sabe o tamanho do vetor após instanciar o objeto em questão?! Não podes ter acesso a esse valor antes de instancia-lo?
Pois, se puder, basta passar ao construtor o tamanho do vetor.

Se realmente tem de ser depois, não há como instanciar, pois vetores se fazendo necessário um tamanho, nesse caso.
Senão, use List ou não pode?

Abraços.

nel

Seria isso:

public Y(int param1, int param2, int size){   
        this.param1 = param1;   
        this.param2 = param2;
        this.param3 = new int[size];  
    }

Abraços.

rmendes08

E qual o problema em criar o array somente na hora que você recebe o tamanho ? Na verdade, esse é o jeito certo de fazer. É até o caso para você refletir se esse array precisa ser realmente um atributo, quando poderia ser perfeitamente uma variável local.

J

Desculpem se me expressei mal, é que precisava que o vetor não ficasse nulo realmente…
mas um amigo me deu uma dica e acabou resolvendo o problema…
no caso eu posso criar o vetor normalmente…
mas quando eu for preenchê-lo no método que determina o tamanho dele, eu tenho de instanciar cada posição do vetor…

dentro do for fica assim:

param3[i] = new X();

Assim eu posso acessar os campos do vetor sem causar um NullPointerException
mas valeu galera…acredito que resolvi…
e valeu pelas dicas também…vou repensar o jeito que estou dando um tamanho pra esse vetor…

Criado 27 de maio de 2011
Ultima resposta 27 de mai. de 2011
Respostas 7
Participantes 5