如何解决在Clojure中使用Java批注
a.b(new C() {
@Handler
public void d() {
System.out.println("hello world");
}
});
我试图将其翻译为clojure:
(.b a (proxy [C] []
(^{Handler {}}
d [] (println "hello world"))))
但是不幸的是,它不起作用。
这是正确的吗?我应该如何在方法中添加Java注释?
解决方法
我通常建议使用Java编写互操作代码:提供适合Java需求的API,并通过调用Clojure函数来实现它。 Clojure-> Java翻译层对于创建不只是reify
或defrecord
的类型而言并不是那么丰富,而且我发现做任何花哨的事情(例如句柄注释或扩展类)都负担很大
此here
的文档基于此,我会尝试一些类似的方法
(deftype ^{Handler true} CC [] ...)
(.b a (CC.))
没有提到代理/验证支持,这就是为什么我要显式创建新类的原因。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。