Для целей взаимодействия с Java мне нужен класс с нулевым конструктором, который выполняет инициализацию.
У объектов этого класса должно быть что-то, напоминающее изменяемые поля Java (а именно, объект представляет бэкэнд игры и должен сохранять игровое состояние).
deftype делает все Я хочу сделать , за исключением обеспечения нулевого конструктора (так как я создаю класс с полями).
Мне не нужно, чтобы поля были общедоступными, поэтому я могу придумать 4 решения:
Использовать gen-класс; Я не хочу этого делать, если смогу избежать этого.
Каким-то образом кодировать закрытые переменные-члены вне знания deftype; Мне сказали, что это невозможно сделать.
Написание модифицированного deftype, который также создает нулевой конструктор; честно говоря, я недостаточно хорошо знаю clojure для этого.
Взятие класса, созданного deftype, и добавление в него нового конструктора.
В конце этого мне нужен класс Java, так как я передам его Java-коду, который будет создавать новый объект из класса.
Является ли какое-либо из предложенных мною решений (или какое-либо, о котором я не задумывался) кроме использования gen-class жизнеспособным?