如何调用超类';Clojure gen类方法中的方法?
我试图创建一个类,通过如何调用超类';Clojure gen类方法中的方法?,clojure,Clojure,我试图创建一个类,通过gen class扩展输入流Clojure。如果我想调用父类的方法,我该怎么做?来自(doc gen class)1: 因此,为了能够调用父对象的fooBar方法,您可以说 (ns my.custom.Foo (:gen-class ; ... :exposes-methods {fooBar parentFooBar} ; ... )) 然后要实现fooBar: (defn -fooBar [this] (combine-appr
gen class
扩展输入流Clojure。如果我想调用父类的方法,我该怎么做?来自(doc gen class)
1:
因此,为了能够调用父对象的fooBar
方法,您可以说
(ns my.custom.Foo
(:gen-class
; ...
:exposes-methods {fooBar parentFooBar}
; ...
))
然后要实现fooBar
:
(defn -fooBar [this]
(combine-appropriately (.parentFooBar this)
other-stuff))
1除了由
ns
表单提供的:gen class
功能之外,还有一个gen class
宏。这不是对您实际问题的回答,但我有一个小库,可以让您假装InputStream是一个接口而不是一个类(这样您根本不需要gen class)。签出,它让您具体化并获得定制的输入流。您需要的任何实例字段都可以通过reify
有趣的想法关闭。我曾经考虑过类似的事情,但最终还是想要一个输入流,以防我想把它们交还给Java。创建一个描述逻辑的InputStreamable,并将其交给一个AOTed Java类InputStream。例如,(InputStream.(具体化InputStreamable(read…(skip…)))
@Bill在前面的评论中忘记了@you。我想这意味着你没有得到通知;如果你现在收到第二次通知,我向你道歉。是的,我明白你的意思。这就是我在早上喝咖啡前的反应。顺便说一句,我收到了没有at标志的评论回复通知。谢谢你的回答和编辑中的附加信息。添加了。调用中有一个重要的细节。这是一个老问题,但有时会引起注意。FWIW,正如我多年来使用Clojure一样,我发现如果我认为我需要gen类的强大功能来完成类似的事情,那么只需编写一点Java就更容易了。
(defn -fooBar [this]
(combine-appropriately (.parentFooBar this)
other-stuff))