繁体   English   中英

在clojure中使用java注解

[英]Use java annotations in clojure

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 翻译层对于创建不只是reifydefrecord类型来说并不是那么丰富,我发现做任何花哨的事情都是一个很大的负担,比如处理注释或扩展类。

有这方面的文档here

基于此,我会尝试一些类似的东西

(deftype ^{Handler true} CC [] ...)
(.b a (CC.))

没有提到代理/实体化支持,这就是我明确创建一个新类的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM