在 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 注释?
有这方面的文档here
基于此我会尝试一些类似
的方法
(deftype ^{Handler true} CC [] ...)
(.b a (CC.))
没有提到 proxy/reify 支持,这就是为什么我要明确创建一个新的 class。
我通常建议在 Java 中编写您的互操作代码:提供一个适合 Java 需要的 API,并通过调用您的 Clojure 函数来实现它。 Clojure->Java 转换层对于创建不只是 reify
或 defrecord
的类型来说并不是那么丰富,我发现做任何花哨的事情都是一个很大的负担,比如句柄注释, 或扩展 类.
a.b(new C() {
@Handler
public void d() {
System.out.println("hello world");
}
});
我试着将它翻译成 clojure:
(.b a (proxy [C] []
(^{Handler {}}
d [] (println "hello world"))))
但不幸的是它不起作用。
这是正确的吗?我应该如何向方法添加 java 注释?
有这方面的文档here
基于此我会尝试一些类似
的方法(deftype ^{Handler true} CC [] ...)
(.b a (CC.))
没有提到 proxy/reify 支持,这就是为什么我要明确创建一个新的 class。
我通常建议在 Java 中编写您的互操作代码:提供一个适合 Java 需要的 API,并通过调用您的 Clojure 函数来实现它。 Clojure->Java 转换层对于创建不只是 reify
或 defrecord
的类型来说并不是那么丰富,我发现做任何花哨的事情都是一个很大的负担,比如句柄注释, 或扩展 类.