2013-12-05 3 views
-1

Я нахожу некоторые трудности работы в этом классе (не написанный мной), пост только секции класса, пораженной проблемы:Я не могу вернуть значение Enum? Исключение выбрано, почему?

public class Drive { 
    ......................... 
    ......................... 
    public enum DriveMode { 
    None, Stub, Mirror 
    }; 
    ......................... 
    ......................... 

    public String getModeString() { 
     return mode.toString().toLowerCase(); 
    } 
} 

problm является то, что, когда из другого класса, я попытаться вызвать getModeString() метод, который он даст мне ошибку (сгенерировать исключение)

Infact в другой класс я называю:

if(drive.getModeString() != null) 
    driveElement.getChild("mode").setText(drive.getModeString()); 

и с помощью отладки я вижу, что он идет с ошибкой, когда он вызывает drive.getModeString(), затем попытайтесь выполнить return mode.toString(). toLowerCase(); но:.

1) Если в отладчик, я пытаюсь вычислить выражение mode.toString() toLowerCase() он сказал мне, что: <error(s)_during_the_evaluation> и если я продолжу с отладкой идти к следующему шагу а NullPointerException выбрано

Почему? У кого-то есть идеи о том, как его решить?

Tnx Andrea

+3

Какое исключение? –

+2

Вы не показываете, где объявлен или назначен элемент данных режима. Скорее всего, это нулевое значение. – OldProgrammer

+0

Боюсь, вы не указали достаточно подробностей. Где режим объявлен и заселен? Какое точное исключение и стек. – topr

ответ

2

Скорее всего mode поле просто пустым.

+0

Я думал, что он был инициализирован с первым значением (Нет) по умолчанию, если поле режима не было явно инициализировано, не так ли? – AndreaNobili

+1

@AndreaNobili Нет, вам нужно явно инициализировать поле точно так же, как с любым другим непримитивным типом, или оно будет null. Сделайте что-то вроде 'private DriveMode mode = DriveMode.NONE;' – dimoniy

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