Статические конечные переменные отображаются как ноль и 0.0 в режиме отладки - PullRequest
1 голос
/ 20 декабря 2011

Я запускаю свое приложение Android в режиме отладки, где у меня есть некоторые константы, определенные как static final переменные, живущие в Interface.

Когда я нахожусь в режиме отладки в Eclipse и нахожу эти константы, чтобы увидеть их содержимое, я вижу null для строк и 0.0 для моих двойников.

Интерфейс выглядит следующим образом:

public interface IMyConstants {
    public static double DOUBLE_CONST = 4.2235234;
    public static String STRING_CONST= "Should be some string";
}

Этот интерфейс находится во внешнем проекте, отличном от Android, который включен в classpath.

Другие константы из других упомянутых проектов Android, кажется, дают мне свою информацию, и они объявлены точно так же.

Я задаюсь вопросом, трудно ли отладчику читать их, потому что проект не на Android, так как это единственное отличие, которое я изначально вижу.

Прямо перед точкой останова я вывел значение константы DOUBLE_CONST в LogCat и получил правильное значение.

Это:

// Hovering over any of the constants here do not show their true value in debug

double value = myValue / IMyConstants.DOUBLE_CONST; 
Log.i("MyProject", "IMyConstants.DOUBLE_CONST: " + IMyConstants.DOUBLE_CONST);
Log.i("MyProject", "IMyConstants.STRING_CONST: " + IMyConstants.STRING_CONST);

/*
 * The breakpoint is here.. 
 * hovering over DOUBLE_CONST above shows DOUBLE_CONST = 0.0
 * hovering over STRING_CONST above shows STRING_CONST = null
 */
someBreakPointedMethod();  

Дал:

12-19 23:32:54.316: INFO/MyProject(23806): IMyConstants.DOUBLE_CONST: 4.2235234
12-19 23:32:54.316: INFO/MyProject(23806): IMyConstants.STRING_CONST: Should be some string

Почему представление отладочного объекта (которое появляется при наведении курсора на переменную) не работает в этой ситуации?

1 Ответ

3 голосов
/ 20 декабря 2011

Просто поставьте точку останова после ваших заявлений как это

  • при наведении курсора на DOUBLE_CONST, приведенное выше, отображается DOUBLE_CONST = 0,0
  • при наведении курсора на указанную выше STRING_CONST отображается STRING_CONST = ноль

Точка останова должна быть здесь ..

...