我有非常简单的 java 代码:
public class MessageListenerExample extends ListenerAdapter
{
@Override
public void onMessageReceived(MessageReceivedEvent event)
{
// do something with event
}
}
但是,我似乎无法理解如何将该代码转换为 clojure 代码。文档和文章非常困惑。我也很乐意看到更多示例。我也对使用 implements
感兴趣。
最佳答案
您可以使用 proxy
扩展现有的 Java 类并实现接口(interface)。例如:
(import '[java.awt.event ActionListener ActionEvent KeyAdapter KeyEvent])
(def listener
(proxy
;; first vector contains superclass and interfaces that the created class should extend/implement
[KeyAdapter ActionListener]
;; second vector contains arguments to superclass constructor
[]
;; below are all overriden/implemented methods
(keyPressed [event]
(println "Key pressed" event))
(actionPerformed [action]
(println "Action performed" action))))
(.keyPressed listener nil)
;; => Key pressed nil
(.actionPerformed listener nil)
;; => Action performed nil
关于java - 创建一个扩展类的类,并在 clojure 中覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38573470/