gpt4 book ai didi

java - 为什么对对象使用 getter 会返回 NullPointerException

转载 作者:行者123 更新时间:2023-12-01 10:52:17 26 4
gpt4 key购买 nike

我正在尝试对对象使用 getter,以便将该对象的信息存储在另一个对象中。然而,仅通过使用 getter,它就会立即返回 NullPointerException。

这是将该对象作为字段(和 getter)的类的代码:

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 不为 Null。已经确定了。它打印如下:torneodetenis.NodoAnos@12539123

最佳答案

您在 nodAno 中传递的参数必须为 null。在 Java 中,调用 null 对象上的方法将导致 NullPointerException

避免这些问题的一个小技巧:如果您使用 IntelliJ IDEA 或类似的 IDE,您可以将 @NotNull 注释添加到您的参数中,如果您传递了可能的参数,IDE 会警告您null 对象转换为需要非空值的方法调用。您可以在这里阅读更多相关信息:https://www.jetbrains.com/idea/help/nullable-and-notnull-annotations.html

关于java - 为什么对对象使用 getter 会返回 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33791480/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com