Добавить конструктор в deftype created class

В целях взаимодействия с Java мне нужен класс, который имеет конструктор с нулевым значением, который выполняет инициализацию. Объекты этого класса должны иметь что-то наподобие изменяемых полей Java (а именно, объект представляет бэкэнд игры и должен сохранять состояние игры).

deftype делает все Я хочу сделать за исключением , предоставляют конструктор с нулевым значением (поскольку я создаю класс с полями).

Мне не нужно, чтобы поля были общедоступными, поэтому я могу придумать 4 решения:

Используйте gen- класс; Я не хочу этого делать, если могу этого избежать.
Каким-то образом кодировать частные переменные-члены вне зависимости от deftype; Мне сказали, что это невозможно.
Написание измененного deftype, который также создает конструктор с нулевым значением; честно говоря, я недостаточно хорошо знаю clojure для этого.
Взяв класс, созданный с помощью deftype, и каким-то образом добавив к нему новый конструктор.

В конце мне нужен класс Java, поскольку я передам его коду Java, который будет создавать новый объект из класс.

Есть ли какие-либо решения, которые я предложил (или какие-либо, о которых я не думал), кроме использования gen-class жизнеспособным?

11
задан Alex R 29 June 2011 в 17:59
поделиться