Json для собственного класса
Работаю в libGDX с сериализацией собственных классов.
Вопрос следующий: при десереализации Json в объект типа Cooldown.class (собственный класс) возникает ошибка
Class cannot be created (missing no-arg constructor): com.badlogic.gdx.graphics.g2d.Animation
Дело в том, что в моем классе Cooldown есть переменная типа Animation. Ошибка требует создания пустого конструктора класса Animation. При этом, я не предполагаю, как мне можно его сделать в Animation (файл Read-Only).
Ответы (1 шт):
Твой класс Cooldown наследует интерфейс Serializable?
В этом интерфейсе есть два метода для чтения обьекта из JSONa и для записи. Если обьект имплементирует этот интерфейс, то класс Json будет использовать их для сериализации.
В противном случае будет использоваться Reflection и libGdx попытаеться сериализовать все поля обьекта, в том числе и Animation. Чтобы это предотвратить, инициализируй анимацию в пустом конструкторе, и поставь перед ее полем ключевое слово transient(говорит сериализатору о том что это поле не нужно сериализировать).
private transient Animation anim;
private Cooldown() {
anim = new Animation(...);
}
Либо опять таки имплементируй Serialiable в Cooldown-е , и пропиши свой алгоритм сериализации (как по мне то это проще).
@Override
public void write(Json json) {
//Сохраняешь то что нужно
}