2017-04-03 1 views
0

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()); 


    } 
} 

그리고 문자열로 사람을 얻는 방법은 다음 중 하나입니다 : 나는 activarVistaEditar 함수를 호출 버튼을 누르면

public Persona obtenerPersona(String dni) { 
    Persona personaObtenida = null; 
    for (Persona persona : getPoolPersonas()) { 
     if (persona.getDni() == dni) { 
      personaObtenida = persona; 
     } 
    } 
    return personaObtenida; 
} 

그래서, 어떻게 든 널 값을 나에게 돌려, 내가 접근하려고하는 사람 대신에.

나는 올바른 String과 Frame을 함수에 전달했고, 값이 올바른지 확인했다. 나는 왜 내가 풀장에있는 사람들에게 접근 할 수 없는지 이해하지 못한다. 이곳에있는 개체. 나는 다른 곳에서 그것을 할 수있다. 지르콘 같은

+1

가능한 복제본 [Java의 문자열을 어떻게 비교합니까?] (http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – Zircon

+0

가능성이있는 것처럼 보입니다. PoolPersonas에 페르소나를 추가하지 않았습니다. - PoolPersonas는 비어 있습니다. 이 경우 obtenerPersonas는 null을 리턴합니다 (PoolPersonas가 null이 아님을 가정). – HedonicHedgehog

+0

'if (persona.getDni() == dni) {'를'if (persona.getDni(). equals (dni)) {' –

답변

0

예는 말한다, 또는 의미 : 당신은 equals()하지 ==

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

당신은 항상 false로 평가됩니다 객체 참조 대신 그 값의 if 문을 비교하고 이후로 문자열을 비교합니다.

+0

정말 고마워, 그건 내 실패했다. 파이썬처럼 그들을 비교할 생각이었다. 나의 즐거움. – Baltimer

관련 문제