Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何调用超类';Clojure gen类方法中的方法?_Clojure - Fatal编程技术网

如何调用超类';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))