NullPointerException em atributo quando vou adicionar um valor nele

Olá!
Pessoal sou muito novo em desenvolvimento e tenho ainda várias dúvidas no Java. Estava fazendo essa aplicação para comparar 2 listas, mas o método addCidade() esta dando NullPointerException quando tento adicionar uma cidade nele. Não sei pq esta faltando ainda mais parece que to tentando adivinhar o que esta acontecendo e já estou me perdendo.
Gostaria de uma ajuda, se alguém puder responder agradeço desde já.

As classes são essas

import java.util.List;

public class FiltroDasCidade{

private int candidato;
private List<String> cidades;

public FiltroDasCidade() {

}

public int getCandidato() {
    return candidato;
}

public void setCandidato(int idCandidato) {
    this.candidato = idCandidato;
}

public List<String> getCidades() {
    return cidades;
}

public void setCidades(List<String> cidades) {
    this.cidades = cidades;
}

public void addCidade(String cidade) { // esta dando NullPointerException :?
    cidades.add(cidade);
}

}

public class VagaDeEmprego {

private String nomeVaga;
private String cidade;

public VagaDeEmprego() { }

public VagaDeEmprego(String nomeVaga, String cidade) {
    this.nomeVaga = nomeVaga;
    this.cidade = cidade;
}

public String getNomeVaga() {
    return nomeVaga;
}

public void setNomeVaga(String nomeVaga) {
    this.nomeVaga = nomeVaga;
}

public String getCidade() {
    return cidade;
}

public void setCidade(String cidade) {
    this.cidade = cidade;
}

}

import java.util.ArrayList;
import java.util.List;

public class MainClass extends VagaDeEmprego {

public static void main(String[] args) {

    List<VagaDeEmprego> vagas = new ArrayList<>();
    vagas.add(new VagaDeEmprego("Motorista", "São Paulo"));
    vagas.add(new VagaDeEmprego("Empacotador", "Araras"));
    vagas.add(new VagaDeEmprego("Administrador", "Leme"));
    vagas.add(new VagaDeEmprego("Programador", "Pirassununga"));


    FiltroDasCidade filtroDasCidade = new FiltroDasCidade();
    filtroDasCidade.setCandidato(1);

    filtroDasCidade.addCidade("Leme");
    filtroDasCidade.addCidade("Gotham");
    filtroDasCidade.addCidade("Pirassunga");


    List<VagaDeEmprego> cidadesEncontradas = new ArrayList<>();

    for (VagaDeEmprego vaga : vagas) {
        if (filtroDasCidade.getCidades().contains(vaga.getCidade())) {
            cidadesEncontradas.add(vaga);
        }


        System.out.println("Cidades encotradas = " + cidadesEncontradas);

    }
}

}

Na classe FiltroDasCidade você tem que inicializar o atributo cidades e pode apagar o método setCidades.

1 curtida