[quote=gabrielmassote]Tudo bem mr.rauber?
primeira coisa: talvez uma das coisas mais importantes é voce dar um impor na sua classe ControleReserva, pois assim voce vai poder visualizar todos os metodos ou variaveis public que pertecerem a classe.
segunda coisa: voce ou pode criar um metodo na classe ControleReserva que retorne a lista pra voce ( como ja foi citado aqui ). Mas assim voce teria que atribuir ela toda a outra lista nessa sua classe ConsultarAeroportos.
terceira coisa: voce pode apenas declarar ela como public static na classe ControleReserva.
Exemplo utilizando primeira e segunda dica:
cara nao testei…fiz de cabeca…mas a principuo nao possui erros sitaticos…so quis lhe mostrar as duas formas de voce acessar sua lista.
caso tenha feito algo errado outros colegas virao e podem lhe ajudar ou qualquer coisa responda que estou on pela madrugada
abraco[/quote]
Só alguns comentários. Esse código tem 2 erros. O primeiro é na declaração do atributo da lista na classe ControleReserva. Ela está public, portanto, não está encapsulada. Não é bom deixar “qualquer um” alterar os atributos de uma classe. O mesmo vale para outros trechos de código.
O segundo erro é que, mesmo tornando esse atributo private, a lista ainda não será encapsulada! Por que? Porque seu get retorna uma referência para a lista. Portanto, qualquer um que o utilize, fará uso da lista de maneira não encapsulada. A solução é fazer com que o get retorne uma versão imodificável da lista ou uma cópia da lista.
E para adicionar ou remover elementos? Aí sim, você adiciona métodos na classe controle reserva para isso, já validando os dados de entrada e fazendo eventuais conversões de saída. Por exemplo:
public class ControleReserva {
private List aeroportos = new ArrayList();
public List getAeroportos() {
//Vamos retornar a lista sem que os outros possam modifica-la.
//Isso é útil pois podemos percorrer essa lista com for each, iteradores, etc.
return Collections.unmodifiableList(aeroportos);
}
public Aeroporto get(int index) {
//Vamos garantir o cast já na classe controle reserva.
return (Aeroporto) aeroportos.get(index);
}
//Nosso add só aceita aeroportos. Isso evita que outros objetos sejam adicionados na lista.
public void add(Aeroporto aeroporto) {
//Podemos proibir a adição de aeroportos nulos
if (aeroporto == null)
throw new IllegalArgumentException("O aeroporto não pode ser nulo!");
aeroportos.add(aeroporto);
}
}
Se você estiver usando Java 5 ou superior, procure criar uma lista só de aeroportos, assim:
private List<Aeroporto> aeroportos = new ArrayList<Aeroporto>();