Java-Can';无法从静态对象获取属性
我正在用Java做一个MVC GUI项目。我有一个3帧和3个控制器,每个视图1个。问题是我可以创建Person对象,但当我想从存储它们的静态ArrayList获取它们的值时,会向我发送一个NullPointerException。但是ArrayList不是空的,因为我已经用测试用例保证了这一点Java-Can';无法从静态对象获取属性,java,arraylist,nullpointerexception,static,Java,Arraylist,Nullpointerexception,Static,我正在用Java做一个MVC GUI项目。我有一个3帧和3个控制器,每个视图1个。问题是我可以创建Person对象,但当我想从存储它们的静态ArrayList获取它们的值时,会向我发送一个NullPointerException。但是ArrayList不是空的,因为我已经用测试用例保证了这一点 public class ControladorFormulario { public static PoolPersonas poolPersonas = new PoolPersonas();
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;
}
因此,当我按下调用activivarvistaeditar函数的按钮时,它会以某种方式返回一个空值,而不是我试图访问的人
我已经检查了是否已向函数传递了正确的字符串和帧,并且值是正确的。我只是不明白为什么我不能在这个地方访问poolPersonas对象中的persons,而我可以在其他地方访问它。是的,就像Zoron说的,或者意思是:你用
equals()
来比较字符串,而不是=
if (persona.getDni().equals(dni))
由于您正在比较对象引用而不是它们的值,
if
语句的计算结果将始终为false。可能的重复项看起来您可能从未向PoolPersonas添加过任何角色-PoolPersonas为空。在本例中,obtenerPersonas将返回null(假设PoolPersonas不为null)。请尝试将if(persona.getDni()==dni){
替换为if(persona.getDni().equals(dni)){
这是比较的问题,谢谢大家:)非常感谢,这是我的失败。我很高兴能像Python一样考虑比较它们。