Получение хэш-карт - PullRequest
0 голосов
/ 17 февраля 2019

проблема с хеш-картами.

Я пытался получить hashmap вне if (BookValues.containsKey(ID)), и я всегда получал:

исключение java nullpointer

вот код: (предположим, это было объявлено. Я использовал Integer, Class для своей hashmap)

    int targetID = BookValues.get(ID).BookID.intValue();
    String targetTitle = BookValues.get(ID).Title.toString();
    String targetAuthor= BookValues.get(ID).Author.toString();
    int targetCopies=BookValues.get(ID).Copies.intValue();

всякий раз, когда я кодирую его внутри ключа содержит, он работает, но когда я делаю это вне егонаталкивается на ошибку.Я думал о том, чтобы вытащить его за пределы .containsKey, потому что это удлинило бы мой код, и я пытаюсь сохранить spaCan. Кто-нибудь может мне это объяснить?

1 Ответ

0 голосов
/ 17 февраля 2019

В коде

int targetID = BookValues.get(ID).BookID.intValue();
String targetTitle = BookValues.get(ID).Title.toString();
String targetAuthor= BookValues.get(ID).Author.toString();
int targetCopies=BookValues.get(ID).Copies.intValue();

есть несколько мест, где могут создаваться исключения.

BookValues.get(ID) даст вам объект, если он существует, или null, если он не существует.т.Чтобы избежать возможного NullPointerException эта строка должна быть разбита.Далее предполагается, что значения вашей карты BookValue объектов.

BookValue value = BookValues.get(ID);
if (value != null) {
    int targetId = value.BookID.intValue();
    String targetTitle = value.Title.toString();
    String targetAuthor = value.Author.toString();
    int copies = value.Copies.intValue();
    // rest of code here
} else {
    // TODO do something if there's no value in the map for the specified key
}

Обратите внимание, что таким образом, вы также избегаете повторения .get(ID) on.

Рассмотрите также после соглашения Java-кода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...