Clojure 使用deftype实现带有类型参数的泛型接口

Clojure 使用deftype实现带有类型参数的泛型接口,clojure,Clojure,是否可以将类型参数传递到由deftype实现的泛型接口中?我正在尝试使用一个严重依赖类型参数的框架,但在纯Clojure中显然无法做到这一点。我可以回到纯Java,但由于其他原因,它使代码和构建配置更加繁琐,所以理想情况下我希望保持它的纯 我希望编写的代码的Java等价物如下所示: public class BlahBlahSerializer implements SerializationCustomSerializer<BlahBlah, BlahBlahProxy> {

是否可以将类型参数传递到由deftype实现的泛型接口中?我正在尝试使用一个严重依赖类型参数的框架,但在纯Clojure中显然无法做到这一点。我可以回到纯Java,但由于其他原因,它使代码和构建配置更加繁琐,所以理想情况下我希望保持它的纯

我希望编写的代码的Java等价物如下所示:

public class BlahBlahSerializer implements SerializationCustomSerializer<BlahBlah, BlahBlahProxy> {
  /* implementation here */
}

有可能吗?

我在为ApacheBeam编写clojure库时遇到了这个问题,Beam将泛型的反射用于各种目的,但找不到解决方法。我的结论是,使用clojure无法将这些信息输入到发出的类中,尽管这还不是确定的。我的解决方案是编写用Java定义这些东西的小类,但其方法实现立即委托给Clojure代码


我在为ApacheBeam编写clojure库时遇到了这个问题,Beam将泛型的反射用于各种目的,但找不到解决方法。我的结论是,使用clojure无法将这些信息输入到发出的类中,尽管这还不是确定的。我的解决方案是编写用Java定义这些东西的小类,但其方法实现立即委托给Clojure代码


泛型类型在运行时被擦除,因此您无需在clojure实现中指定它们。
SerializationCustomSerializer
接口是什么样子的?与局部变量不同的类型和字段参数不会被擦除,并且可以通过反射获得,框架依赖于反射。接口的定义是,它基本上使用类型参数作为方法返回值和参数。泛型类型在运行时被删除,因此您不需要在clojure实现中指定它们。
SerializationCustomSerializer
接口是什么样子的?与局部变量不同的类型和字段参数不会被擦除,并且可以通过反射获得,框架依赖于反射。接口的定义是,它基本上使用类型参数作为方法返回值和参数。这也是我做的,Java facades这也是我做的,Java facades
(deftype BlahBlahSerializer []
  ^{:generic-type-parameters [BlahBlah BlahBlahProxy]} SerializationCustomSerializer
  /* implementation here */)