Я пишу приложение для Android и столкнулся с очень странной ошибкой, с которой я не могу окутать голову. В приведенном ниже коде переменная «результат» заполняется значениями в зависимости от разных условий. Затем он должен быть возвращен. В отладчике можно увидеть, что значение для результата установлено правильно. Однако при достижении оператора return (в этот момент результат имеет правильное значение в соответствии с отладчиком), метод возвращает null вместо значения в результате. Я также пробовал очистить проект и скомпилировать код на другой машине с теми же результатами. Я не могу представить, что здесь не так, но мне кажется, что во время процесса компиляции что-то пошло не так.Оператор возврата возвращает значение null вместо заданного значения
Я использую 64-битную jdk1.7.0_79 на Windows 10 машины и запуска кода на Nexus 7 (2012) Эмулятор с Android Studio Версия 1.3.1
Большое спасибо за вашу помощь в авансовый.
private static WikiItemContainer getMappingForIntermediateThrowEvent(IntermediateThrowEvent intermediateThrowEvent, List<WikiItemContainer> eventContainers) {
WikiItemContainer result = null;
List<EventDefinition> eventDefinitions = intermediateThrowEvent.getEventDefinitions();
if (eventDefinitions.isEmpty()) {
result = new WikiItemContainer(eventContainers.get(0).getItems().get(1));
} else if (eventDefinitions.size() > 1) {
result = new WikiItemContainer(eventContainers.get(10).getItems().get(6));
} else {
EventDefinition definition = eventDefinitions.get(0);
if (definition instanceof MessageEventDefinition) {
result = new WikiItemContainer(eventContainers.get(1).getItems().get(6));
} else if (definition instanceof EscalationEventDefinition) {
result = new WikiItemContainer(eventContainers.get(3).getItems().get(4));
} else if (definition instanceof LinkEventDefinition) {
result = new WikiItemContainer(eventContainers.get(5).getItems().get(1));
} else if (definition instanceof CompensateEventDefinition) {
result = new WikiItemContainer(eventContainers.get(8).getItems().get(2));
} else if (definition instanceof SignalEventDefinition) {
result = new WikiItemContainer(eventContainers.get(9).getItems().get(6));
}
}
return result;
}
Что такое особый класс 'definition', когда возвращается нуль? Вероятно, это событие EventDefinition, которое не обрабатывается в операторах if. –
Пробовал ли вы регистрировать, является ли результат нулевым перед оператором return? –
Да, это объект типа WikiItemContainer, как и следовало ожидать, и как показывает отладчик. –