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