Я пытаюсь использовать геттер для объекта, чтобы хранить информацию об этом объекте в другом объекте. Тем не менее, просто используя getter, он немедленно возвращает исключение NullPointerException.Почему использование getter для объекта возвращает NullPointerException
Это код класса, который имеет объект как поле (и геттер):
public class NodoAnos implements Serializable
{
private int ano;
private NodoAnos proximo;
private ListaEquipos equipos;
public NodoAnos(int año)
{
this.ano = año;
this.proximo = null;
this.equipos = new ListaEquipos();
}
public int getAno()
{
return ano;
}
public void setAno(int año)
{
this.ano = año;
}
public ListaEquipos getEquipos()
{
return equipos;
}
Вот все методы перед NullPointerException (исключение в примере кода 6):
Пример кода 1:
private void informacion() throws IOException, FileNotFoundException, ClassNotFoundException
{
int ano = elegirAnoPopup(); //SEE CODE SAMPLE NUMBER 2
NodoAnos nodAno = new NodoAnos(ano);
nodAno = anos.buscarAños(nodAno); //SEE CODE SAMPLE NUMBER 5
datosComboBoxUniversidad(nodAno); //SEE CODE SAMPLE NUMBER 6
}
Пример кода 2:
private int elegirAnoPopup() throws IOException, FileNotFoundException, ClassNotFoundException
{
NodoAnos aux = new NodoAnos(1);
List<String> choices = new ArrayList<>();
anos = anos.leerArchivo(anos); //SEE CODE SAMPLE NUMBER 3
while(aux != null)
{
aux = anos.llenarDialogo(aux); //SEE CODE SAMPLE NUMBER 4
if(aux != null)
choices.add(Integer.toString(aux.getAno()));
}
ChoiceDialog<String> dialog = new ChoiceDialog<>("Elegir año",choices);
dialog.setTitle("Consultar Informacion");
dialog.setHeaderText("Por favor, introduzca la informacion requerida");
dialog.setContentText("Introduzca el año a consultar:");
Optional<String> result = dialog.showAndWait();
return Integer.parseInt(result.get());
}
Пример кода 3:
public ListaAnos leerArchivo(ListaAnos anos) throws FileNotFoundException, IOException, ClassNotFoundException
{
ListaAnos lista = anos;
try
{
FileInputStream fis = new FileInputStream("lista.DAT");
ObjectInputStream ois = new ObjectInputStream(fis);
if(ois != null)
{
ListaAnos objeto = (ListaAnos) ois.readObject();
lista = objeto;
ois.close();
}
}
catch(FileNotFoundException e)
{
System.out.println("No existe un archivo");
}
return lista;
}
Пример кода 4:
public NodoAnos llenarDialogo(NodoAnos aux)
{
if(aux.getAno() == 1)
aux = cabeza;
else
aux = aux.getProximo();
return aux;
}
Пример кода 5:
public NodoAnos buscarAños(NodoAnos nodAño)
{
NodoAnos aux = cabeza;
while(aux != null)
{
if(nodAño.getAno() == aux.getAno())
{
return aux;
}
else
{
aux = aux.getProximo();
}
}
return null;
}
Пример кода Номер 6:
private void datosComboBoxUniversidad(NodoAnos nodAno)
{
ListaEquipos listaEquipo = new ListaEquipos();
NodoEquipos nodEquipo = new NodoEquipos(null, 0, 0);
listaEquipo = nodAno.getEquipos(); //NULLPOINTEREXCEPTION
while(nodEquipo != null)
{
nodEquipo = listaEquipo.buscarEquipos(nodEquipo);
if(nodEquipo != null)
{
comboUniversidad.getItems().add(nodEquipo.getUniversidad());
}
}
}
ВАЖНОЕ ПРИМЕЧАНИЕ: nodAno не является нулевым. Уже убедился в этом. он печатается следующим образом: [email protected]
Потому что 'nodAno' равно null. – Yoda
Возможно, потому что nodAno имеет значение null – MadProgrammer
nodAno не равно нулю. Я убедился в этом – GFV450