Dúvida: get/set em array

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á!

não consegue?
ele acusa algum erro?

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.

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

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:

Isso?

[code]Escola escola = new Escola();

escola.setSalas(new Sala[20]);

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

Editando…

Opa, deu certo :slight_smile:

Brigadão jairelton!

flws, abraços

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

[quote=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:

[code]
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++;  
}   

}
[/code][/quote]

Vai dar um belo ArrayIndexOutOfBoundsException depois de 20 setSalas.

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.

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

Abraços!