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 шт):

Автор решения: kuturu

Твой класс 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) {
    //Сохраняешь то что нужно
}
→ Ссылка