Dúvida: get/set em array

10 respostas
W

Olá pessoal! :slight_smile:

Gostaria de saber se tem como fazer um array de objetos ser ‘private’
e utilizar os métodos get/set para utilizá-lo. Algo assim… (não consigo acessar desse jeito :()

public class Escola 
{
    private Sala[] salas = new Sala[20];

     public Sala[] getSalas() {
        return salas;
    }
    
    public void setSalas(Sala[] salas) {
        this.salas = salas;
    }

}

Agradeço desde já!

10 Respostas

marcosharbs

não consegue?
ele acusa algum erro?

renzonuccitelli

Sim vc pode fazer isso. Mas nesse caso, quando vc usar o método set, vc vai perder todas as informações anteriores sobre as salas. Quando vc usa um array ou uma collection qualquer, é comum não ter o método set, e sim um método add, que no seu caso, adicionaria uma sala ao vetor. poderia ter também um método addAll, que vc receberia um vetor e adiconaria os elementos dele no array da sua classe.

marcosharbs

é vo ateh modifica esse post
é possivel sim
mas tem esse problema citado acima

W

Ahh tah certo… então acho que vou deixar sem private mesmo :?

Com arraylist ficaria bem mais simples né?
Dpois vou tentar, só queria saber se tinha como fze com array normal :stuck_out_tongue:

Agradeço a todos as respostas! :smiley:

J

Isso?

Escola escola = new Escola();

escola.setSalas(new Sala[20]);

escola.getSalas()[0] = new Sala();
W

Editando…

Opa, deu certo :slight_smile:

Brigadão jairelton!

flws, abraços

D

Cria uma instância static int para ser o índice do vetor, na hora de adicionar o elemento, vc adiciona na posição i e incrementa o i.
Por exemplo:

public class Escola   
{   
    private Sala[] salas = new Sala[20];   
    private static  int i = 0;
  
     public Sala[] getSalas() {   
        return salas;   
    }   
       
    public void setSalas(Sala salas) {   
        this.salas[i] = salas; 
        i++;  
    }   
  
}

Vc poderia fazer também um método só para adicionar, tipo um add como o amigo de cima falou.

Eu fiz um exemplo com inteiros aqui, espero que ajude:

public class Escola   
{   
    private int[] salas = new int[20];   
    private static  int i = 0;
  
     public int[] getSalas() 
     {   
        return salas;   
    }   
       
    public void setSalas(int salas) 
    {   
        this.salas[i] = salas; 
        i++;  
    }   
    
    public void print()
    {
    	int j = 0;
    	
    	while(j < this.i)
    	{
    		System.out.println(salas[j]);
    		j++;
    	}
    }
    
    public static void main(String args[])
    {
    	Escola escola = new Escola();
    	
    	escola.setSalas(1);
    	escola.setSalas(2);
    	escola.setSalas(3);
    	escola.print();
    }
  
}
B
douglastc:
Cria uma instância static int para ser o índice do vetor, na hora de adicionar o elemento, vc adiciona na posição i e incrementa o i. Por exemplo:
public class Escola   
{   
    private Sala[] salas = new Sala[20];   
    private static  int i = 0;
  
     public Sala[] getSalas() {   
        return salas;   
    }   
       
    public void setSalas(Sala salas) {   
        this.salas[i] = salas; 
        i++;  
    }   
  
}

Vai dar um belo ArrayIndexOutOfBoundsException depois de 20 setSalas.

peczenyj

setSalas nesse molde esta confuso.

deveria ser addSala (pois adiciona uma sala) e deveria tomar alguma ação quando o vetor estivesse cheio: ou lança uma exception ou copia pra outro vetor, maior. No fim das contas vc esta implementando uma List mas com outras palavras.

W

HMmm… vlw aew para todos que responderam, acho que consigo resolver o exercício aqui. :smiley:

Abraços!

Criado 28 de outubro de 2008
Ultima resposta 28 de out. de 2008
Respostas 10
Participantes 7