根据我的研究,扩展 Java 类的方法基本上是使用命名空间中的 gen-class 或使用代理。但是查看Clojure 类型选择流程图,似乎建议我可以使用记录来扩展 Java 类:
- 该类型是否需要扩展 Java 类或实现任何接口?是的
- 你需要一个命名类型还是只需要一个匿名类型的实例?命名类型
- 您是否需要能够从 Java 中静态引用该类?不
- 您的班级是否对领域价值进行建模 - 从而受益于类似 hasmap 的功能和语义?是的
使用定义记录
所以问题是......如何?
例如(来自这个):
public final class Second extends Struct {
public final Signed32 a_number = new Signed32();
public Second(final Runtime runtime) {
super(runtime);
}
}
public final class Top extends Struct {
public final Second second = inner(new Second(getRuntime()));
public final Second[] seconds = array(new Second[5]);
public final Signed32 another_number = new Signed32();
public final Signed32[] more_numbers = array(new Signed32[5]);
public Top(final Runtime runtime) {
super(runtime);
}
}
难道我...
(defrecord Second)
(extend jnr.ffi.Struct
Second)
?