2014-10-06 2 views
0

Хорошо, это будет звучать просто без ума .. Что-то очень, очень, очень странное происходит в следующем коде:новый возвращает оператор обнулить

treeTable = new TreeTable(); 

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

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

..И вот выход:

table: null 

И все! Это не подделка!

Что, черт возьми, я должен сделать с этим? В отладчике я вижу, что значение null присваивается treeTable сразу после treeTable = new TreeTable();. Даже незнакомцем является то, что второй println не выполняется ... Неужели я действительно так плохой и хромой на Java? Как это может произойти?

Заранее спасибо

+1

Для начала, это даже не компилируется. Как можно подтвердить ваши дикие претензии? Если вы просто вставили в метод 'main', вы можете быть уверены, что' treeTable' не будет 'null'. –

+5

Как заявил Марко, это не будет компилироваться, если у вас больше кода, который вы нам не показываете. У вас есть переопределенный метод toString, который возвращает null по ошибке? – jervine10

+0

Я на 99% уверен, что jervine10 ударил ноготь по голове с переопределением 'toString'. Конечно, было бы легко написать код, который воспроизводит этот результат. –

ответ

14

таблицы toString:

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

где alignment является недействительным после инициализации.
Table

+1

Ну, разве это не объясняет много. –

+5

Какая ужасная реализация 'toString()' ... но большая уловка. – biziclop

+0

Ну, извините за мою глупость. Я пытался найти, где вызвано исключение null ptr, и именно поэтому я этому поверила .. Спасибо! – Firzen

Смежные вопросы