出于与 Java 的互操作性的目的,我需要一个具有执行初始化的空构造函数的类。这个类的对象需要有类似于可变java字段的东西(即对象代表游戏的后端,需要保持游戏状态)。
deftype 做了我想做的所有事情,除了提供一个空构造函数(因为我正在创建一个带有字段的类)。
我不需要这些字段是公开可读的,所以我可以想到 4 个解决方案:
使用 gen 类;如果可以避免,我不想这样做。
以某种方式在 deftype 知识之外对私有成员变量进行编码;我被告知这是不可能的。
编写一个修改过的 deftype,它也创建一个空构造函数;坦率地说,我不太了解clojure。
获取由 deftype 创建的类并以某种方式向其添加新的构造函数。
最后,我需要一个 Java 类,因为我将把它交给 Java 代码,Java 代码将从该类中创建一个新对象。
除了使用 gen-class 之外,我建议的任何解决方案(或我没有想到的任何解决方案)是否可行?