我正在用Java做一个MVC GUI项目。我有3个框架和3个控制器,每个视图1个。问题是我可以创建Person对象,但是当我想从存储的静态ArrayList中获取它们的值时,会发送一个NullPointerException。但是ArrayList不是空的,因为TestCases我已经保证了这一点。Java - 无法从静态对象获取属性
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());
}
}
和与String获取人的方法是下一个:
public Persona obtenerPersona(String dni) {
Persona personaObtenida = null;
for (Persona persona : getPoolPersonas()) {
if (persona.getDni() == dni) {
personaObtenida = persona;
}
}
return personaObtenida;
}
所以,当我按下调用activarVistaEditar功能按钮,它在某种程度上返回我Null值,而不是我想要访问的人。
我已经检查过我已经将正确的字符串和框架传递给函数,并且值是正确的。我只是不明白为什么我无法访问这个地方的PoolPersonas Object中的人,我可以在另一个地方做到这一点。
可能的重复[如何比较Java中的字符串?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – Zircon
它看起来像你可能有从未将任何角色添加到PoolPersonas - PoolPersonas为空。在这种情况下,obtenerPersonas将返回null(假设PoolPersonas不为null)。 – HedonicHedgehog
尝试更换if(persona.getDni()== dni){'with'if(persona.getDni()。equals(dni)){' –