我正在用Java做一个MVC GUI项目。我有一个3帧和3个控制器,每个视图1个。问题是我可以创建Person对象,但是当我想从静态ArrayList中获取它们的值时,会向我发送一个NullPointerException。但ArrayList并不是空的原因,TestCases我已经确保了这一点。
public class ControladorFormulario {
public static PoolPersonas poolPersonas = new PoolPersonas();
public static Persona persona = new Persona();
public static void activarVistaEditar(String dni, Formulario frame) {
if (dni == null) {
return;
}
frame.getTxtDni().setText(dni);
frame.getTxtDni().setEnabled(false);
Persona persona = poolPersonas.obtenerPersona(dni);
frame.getTxtNombre().setText(persona.getNombre());
}
}
获取字符串的人的方法是下一个:
public Persona obtenerPersona(String dni) {
Persona personaObtenida = null;
for (Persona persona : getPoolPersonas()) {
if (persona.getDni() == dni) {
personaObtenida = persona;
}
}
return personaObtenida;
}
所以,当我按下调用activarVistaEditar函数的按钮时,它会以某种方式返回Null值,而不是我试图访问的人。
我已经检查过我已经将正确的字符串和框架传递给函数,并且值是正确的。我只是不明白为什么我不能在这个地方访问poolPersonas对象中的人,我可以在其他地方进行访问。
答案 0 :(得分:0)
是的,就像Zircon所说,或者意味着:你将字符串与equals()
进行比较而不是==
if (persona.getDni().equals(dni))
由于您要比较对象引用而不是它们的值,if
语句将始终评估为false。