我正在尝试创建一个通过gen-class
扩展输入流Clojure的类。如果我想调用父类的方法,我该怎么做?
答案 0 :(得分:11)
来自(doc gen-class)
1 :
:exposes-methods {super-method-name exposed-name, ...}
It is sometimes necessary to call the superclass' implementation of an
overridden method. Those methods may be exposed and referred in
the new method implementation by a local name.
所以,为了能够调用父的fooBar
方法,你会说
(ns my.custom.Foo
(:gen-class
; ...
:exposes-methods {fooBar parentFooBar}
; ...
))
然后实施fooBar
:
(defn -fooBar [this]
(combine-appropriately (.parentFooBar this)
other-stuff))
1 除:gen-class
表单提供的ns
工具外,还有一个gen-class
宏。
答案 1 :(得分:1)
这不是你实际问题的答案,但我有一个小库让你假装InputStream是一个接口而不是一个类(所以你根本不需要gen-class)。查看io.core.InputStream
,它可以让您了解io.core.InputStreamable
并获得自定义的InputStream。您需要的任何实例字段都可以是由reify
关闭的本地人。