2014-10-06 1 views
0

확인,이 소리를 null 미쳐 .. 뭔가 아주 아주, 다음 코드에서 어떤 일이 일어나고 아주 이상한 :new 연산자의 반환

table: null 
: 여기

treeTable = new TreeTable(); 

System.out.println("table: " + treeTable); 

if(treeTable == null) { 
    System.out.println("omg how ?!"); 
} 

.. 그리고는 출력

그리고 그게 다야! 이건 가짜가 아니야!

내가 이걸 어떻게해야합니까? 디버거에서 나는 null 값이 treeTabletreeTable = new TreeTable(); 바로 뒤에 할당됨을 알 수 있습니다. 낯선 사람도 두 번째 println이 실행되지 않는다는 것입니다 ... Java에서 정말 나쁘고 절름발이입니까? 이것이 어떻게 일어날 수 있을까 ?? 사전에

감사

+1

처음에는 컴파일되지 않습니다. 누구나 당신의 야생 주장을 어떻게 확인할 수 있습니까? 단순히'main' 메쏘드에 삽입하면'treeTable'이'null'이 아닐 수 있습니다. –

+5

Marko가 말했듯이, 우리에게 보여주지 않는 코드가 더 많지 않으면 컴파일되지 않습니다. 우연히 null을 반환하는 toString 메서드를 재정의 했습니까? – jervine10

+0

저는 jervine10이 toString의 오버라이드로 머리에 못을 박았다는 것을 99 % 확신합니다. 이 결과를 재현하는 코드를 작성하는 것은 확실히 쉽습니다. –

답변

14

테이블의 toString : alignment 초기화 후 null의

@Override 
public String toString() { 
    return alignment; 
} 

.
(TreeTable 확장 Table)

+1

글쎄, 그렇게 많이 설명하지는 마라. –

+5

'toString()'의 끔찍한 구현 ... 그러나 큰 걸림돌. – biziclop

+0

음, 내 어리 석음에 대해 유감스럽게 생각하고 있습니다. 널 ptr 예외가 발생하는 곳을 찾으려고했는데, 그 이유는 그것을 믿었습니다 .. 감사합니다! – Firzen

관련 문제