Я почти уверен, что упускаю что-то действительно очевидное здесь, но это кажется довольно странным.
Я разрабатываю для Android с использованием Eclipse - и у меня есть метод, аналогичный тому, который я отлаживаю ион делает что-то довольно странное ...
public boolean test() {
if (variable == value)
return true;
// more code appears here
return false;
}
Пройдя через это, в первой строке (оператор if) отладчик предполагает, что переменная действительно равна значению (у них есть обе байтовые переменные со значением0) - отладчик затем перемещается на 2-ю строку (возвращаемое значение true), но затем он переходит на последнюю строку (возвращает ложное значение) - пропуская все промежуточное значение!?
Возвращенное значение было равно «false»
WTF там происходит?Я предполагал, что RETURN полностью выйдет из метода - но отладчик (и возвращаемое значение, возвращаемое - ложь) предполагает, что он ничего подобного не делает!?
Чего мне не хватает, смотрящегомне в лицо?Всегда ли выполняются операторы return как последняя строка методов или что-то в этом роде?
ps интересное обновление ...
Переменные, которые я использую, присваиваются в коде, который я не писал - япросто откопал источник и перестроил / перезапустил отладчик с доступом к этому источнику, и я нашел в нем эту строку
byte variable = (byte)9;
Можете ли вы увидеть что-то не так с этим, и это, возможно, объясняетКак вы думаете, проблема?Я написал автору по электронной почте, но пока ... эм ...
Обновление2
Хорошо, я полностью переделал проект, очистил и перестроил его, удалил и переустановил его в телефон иотладчик теперь ведет себя более разумно ...
Проблема, очевидно, заключается в использовании '9' (они используют 0-9 в качестве возможных значений в байте !!) - теперь произошло то, что хотя отладчикпредполагая, что 'variable' равно '0' - это также не соответствует сравнению с (байтом) 0, и, таким образом, я получаю 'false' return - что на самом деле правильно.
Я, очевидно, застрял, пока они не изменят свой код наиспользуйте короткий - что касается принятия ответа, это сложно, так как ответы «перестроить все» и ответы «сравнить с использованием (byte) или bytevalue ()» были как-то правы!?