2014-10-06 82 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