我正在用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)){' –