簡體   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