Como criar Getter/Setter de uma Array e usá-la em outra classe?

Fala pessoal, tudo certo?

Estive usando bastante os Getters e Setters nos meus atributos, porém cheguei numa parte que acabei me enrolando que seria: Como eu criaria o método Getter e Setter de uma Array? :worried:

Exemplo:

class Aluno {
   private Aluno[] alunos; // Minha array encapsulada
   public Aluno getAluno (Aluno posicao) { 
     return this.alunos;
  }
   public void setAluno (Aluno posicao[]) {
     this.alunos = posicao;
  }
}

class Programa {
   Aluno primeiroAluno = new Aluno();
   primeiroAluno.setAluno() = new Aluno[10]; // <-- Dá erro ao compilar aqui.
}

Eu estou fazendo mais ou menos assim, mas sei que está errado :smiley:

Abaixo é o erro que apresenta quando eu compilo a classe principal;

C:\Users\Diego\workspace\Alura\Arrays>javac TestaEmpresa.java
TestaEmpresa.java:123: error: method setFuncionario in class Empresa cannot be applied to given
                empresa.setFuncionario() = new Funcionario[10];
                       ^
  required: Funcionario[]
  found: no arguments
  reason: actual and formal argument lists differ in length
1 error

Este Get e set que vc criou apenas atribui um array ou no caso do set, fiz que vc está passando uma cópia do padrão de bits do array que vc vai passar como parâmetro no set.

Ou seu Get e set está certo se é isso que vc quer.

Porém vc deve passar o novo array de dez posiçoes, dentro do método set.

primeiro aluno.setAluno (new Aluno[10]);

Só respondi sua pergunta a essa hora pq acho que vc está se esforçando :laughing:

1 curtida

Estou me esforçando :smiley:

Nossa não havia passado pela minha cabeça de passar o “new Aluno[10]” como argumento. Agora que você falou e eu olhei o código me lembrei que antes do Setter eu atribuía o valor diretamente(=), mas se estou usando um método setter devo passar o valor no seu parâmetro.

O que me confundiu foi a ideia de colocar o new dentro do parâmetro do set. E outra seria na criação do método setter dele. Eu criei da maneira certa?

Obrigado.