Java - 无法从静态对象

时间:2017-04-03 19:13:22

标签: java arraylist nullpointerexception static

我正在用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对象中的人,我可以在其他地方进行访问。

1 个答案:

答案 0 :(得分:0)

是的,就像Zircon所说,或者意味着:你将字符串与equals()进行比较而不是==

if (persona.getDni().equals(dni)) 

由于您要比较对象引用而不是它们的值,if语句将始终评估为false。