Доступ к входу в HashMap Falls с ClassCastException [закрыто]JAVA

Программисты JAVA общаются здесь
Anonymous
Доступ к входу в HashMap Falls с ClassCastException [закрыто]

Сообщение Anonymous »

Я пытаюсь изменить значение в хэшмапе, но приложение падает, когда я пытаюсь получить доступ к ключу.
Код ниже: < /p>

Код: Выделить всё

package io.itch.mgdsstudio.kingdom.game.gameobjects.controllers.deaths;

import io.itch.mgdsstudio.engine.libs.DeserializationOnly;
import java.util.HashMap;
import java.util.Map;

public final class DeathsDataStruct {

private final HashMap  deathsMap = new HashMap();

@DeserializationOnly
public DeathsDataStruct() {

}

public void increaseDeathsCount(int mapNumber){
for (Map.Entry entrySet : deathsMap.entrySet()){
//! WHY FALLS with ClassCastException at the next line?
Integer existingMap = entrySet.getKey();
int existing = existingMap;
if (existing == mapNumber){
entrySet.setValue(entrySet.getValue()+1);
return;
}
}
deathsMap.put(mapNumber, 1);
}
}
< /code>
Описание исключений указывает на строку:
Integer existingMap = entrySet.getKey();

Полный текст исключения ниже:
Exception in thread "main" java.lang.ClassCastException: class java.lang.String cannot be cast to class java.lang.Integer (java.lang.String and java.lang.Integer are in module java.base of loader 'bootstrap')
at io.itch.mgdsstudio.kingdom.game.gameobjects.controllers.deaths.DeathsDataStruct.increaseDeathsCount(DeathsDataStruct.java:19)
at io.itch.mgdsstudio.kingdom.game.gameobjects.controllers.deaths.DeathsDataStructManager.increaseCount(DeathsDataStructManager.java:40)
at io.itch.mgdsstudio.kingdom.game.gameobjects.controllers.deaths.DeathsCounterController.update(DeathsCounterController.java:28)
at io.itch.mgdsstudio.kingdom.game.gameprocess.GameRound.update(GameRound.java:151)
at io.itch.mgdsstudio.kingdom.game.gameprocess.GameProcess.update(GameProcess.java:105)
at io.itch.mgdsstudio.kingdom.menu.GameScreen.render(GameScreen.java:77)
at com.badlogic.gdx.Game.render(Game.java:48)
at io.itch.mgdsstudio.kingdom.ApplicationManager.render(ApplicationManager.java:83)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Window.update(Lwjgl3Window.java:387)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.loop(Lwjgl3Application.java:192)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.(Lwjgl3Application.java:166)
at io.itch.mgdsstudio.kingdom.DesktopGdxLauncher.main(DesktopGdxLauncher.java:72)

< /code>
Пример этого класса создается с помощью следующего кода: < /p>
private void loadActual() {
WrapperFileHandle wrapperFileHandle = WrapperFileHandle.create();
String relativePath = getRelativePath();
var fileInSaves = wrapperFileHandle.getExternal(relativePath);
if (fileInSaves.exists()){
WrapperJsonLoader wrapperJsonLoader = WrapperJsonLoader.create();
this.deathsDataStruct = wrapperJsonLoader.loadFromExternal(relativePath, DeathsDataStruct.class);
}
else {
deathsDataStruct = new DeathsDataStruct();
}
}
< /code>
... и когда этого файла не было - все нормально. Но когда этот пример создается с использованием json-deserialization-я получаю это исключение.Integer existingMap = Integer.parseInt(String.valueOf(entrySet.getKey()));
< /code>
это работает. Почему эта карта содержит строку, но компилятор думает - это целое число?

Подробнее здесь: https://stackoverflow.com/questions/796 ... texception

Вернуться в «JAVA»