Я новичок, когда дело касается в основном всех форм хранения, кроме SharedPreferences и некоторого SQLite.Я провел некоторый поиск и обнаружил, что JSON + GSON - это быстрый способ разбора объектов и их полей в хранимые строки.
Итак, в моей игре у меня есть объект Player
, у которого есть поля, которые также являются моими.собственные классы:
public class Player {
private int something_game_related = 1;
private Skill equipped_skill;
private Item equipped_weapon;
public Player () {}
}
Я подозреваю, что эти классы являются проблемой, потому что, когда я пытаюсь запустить простой метод сохранения:
private class ItemSerializer implements JsonSerializer<Item> {
public JsonElement serialize( Item src, Type typeOfSrc, JsonSerializationContext context ) {
return new JsonPrimitive(src.toString());
}
}
private class SkillSerializer implements JsonSerializer<Skill> {
public JsonElement serialize( Skill src, Type typeOfSrc, JsonSerializationContext context ) {
return new JsonPrimitive(src.toString());
}
}
public void doSave() {
GsonBuilder gson = new GsonBuilder();
//Both custom classes have zero-arg constructors so we don't need to register those
gson.registerTypeAdapter( Item.class, new ItemSerializer() );
gson.registerTypeAdapter( Skill.class, new SkillSerializer() );
Gson g = gson.create();
String mPlayer = "";
Type player = new TypeToken<Player>(){}.getType();
try{
mPlayer = g.toJson( GameView.mPlayer, player );
}
catch (Exception e) {e.printStackTrace();}
}
, я получаю это исключение: java.lang.IllegalStateException: How can the type variable not be present in the class declaration!
Мой вопрос ..
Как мне заставить работать эти пользовательские сериализаторы?Как я уже сказал, я нуб .. но это выглядит как будто я все сделал правильно ..