Затмение хэш-карты - PullRequest
       5

Затмение хэш-карты

0 голосов
/ 03 октября 2011

Я пытаюсь загрузить хэш-карту, проанализировав plist-файл в Android, используя анализатор plist отсюда: https://github.com/ZhouWeikuan/cocos2d. В прошлом это работало нормально, но недавно моя программа получала нулевое значение.Исключения указателя при использовании этого hashmap (после разбора).Когда я пытаюсь отладить, затмение начинает вести себя странно.Парсер возвращает hashmap, и я могу просмотреть его значение в представлении переменных.Когда я перехожу линию, которая назначается для worldMap, затмение зависает.Когда я пытаюсь увидеть значение worldMap в режиме отладки, я вижу пустую строку, но не вижу значения - в конце концов, eclipse вылетает.

Map worlds = (Map)getWorlds().get("Worlds");
Map worldMap = (Map)worlds.get(String.valueOf(world));
Map levels = (Map)worldMap.get("Levels");

Однако при запуске программы обычно исключение нулевого указателя появляется позжеэти строки.Кроме того, когда я пытаюсь отладить, он не всегда падает в одном и том же месте, поэтому мне очень трудно найти источник этой ошибки ...

Кто-нибудь знает, что происходит?

1 Ответ

0 голосов
/ 03 октября 2011

Не могу точно сказать, что происходит, но NullPointerException наверняка является большим намеком.

Добавьте несколько нулевых проверок после каждой строки кода в приведенном выше примере, и я уверен, что вы сможете довольно быстро отследить ошибку:

Map whatEverThisIs = (Map)getWorlds();
if (whatEverThisIs == null) {
   /* Do something here */
}
Map worlds = (Map)whatEverThisIs.get("Worlds");
if (worlds == null) {
   /* Do something here */
}
Map worldMap = (Map)worlds.get(String.valueOf(world));
if (worldMap == null) {
   /* Do something here */
}
Map levels = (Map)worldMap.get("Levels");
if (levels == null) {
   /* Do something here */
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...