2014-10-06 44 views
0

好吧,這聽起來很瘋狂..東西非常非常,非常奇怪在下面的代碼正在發生的事情:新的運營商返回null

treeTable = new TreeTable(); 

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

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

..和這裏是輸出:

table: null 

就是這樣!這不是假的!

我該怎麼處理這件事?在調試器中,我看到null的值在treeTable = new TreeTable();之後立即分配給treeTable。 即使陌生人是第二個println不執行... 我真的是非常糟糕,在Java中跛腳?這怎麼會發生?

在此先感謝

+1

對於初學者,這甚至不編譯。任何人如何驗證你的瘋狂索賠?如果簡單插入到'main'方法中,可以確定'treeTable'不會是'null'。 – 2014-10-06 12:41:04

+5

正如Marko所說,除非你有更多的代碼沒有顯示給我們,否則這將不會被編譯。你有沒有重寫toString方法,偶然返回null? – jervine10 2014-10-06 12:42:15

+0

我99%確定jervine10已經用'toString'覆蓋了頭部。編寫重現此結果的代碼當然很容易。 – 2014-10-06 12:43:05

回答

14

表的toString

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

其中alignment初始化後爲空。
TreeTable延伸Table

+1

好吧,這並不能解釋很多。 – 2014-10-06 12:43:43

+5

多麼可怕的'toString()'實現......但卻是一個很棒的捕獲。 – biziclop 2014-10-06 12:46:32

+0

好吧,對不起我的愚蠢..我試圖找到空ptr異常導致,這就是爲什麼我相信它..謝謝! – Firzen 2014-10-06 12:48:45