在Clojure中使用reify
时,如何为构造函数提供表达式?
或者,如何将参数传递给基类构造函数?
答案 0 :(得分:5)
您不能将reify
用于子类&实例化类 - 它仅用于协议和接口。 (但是,您可以提供Object
方法的实现。)
要实例化任意类和/或接口的匿名子类,请使用proxy
。代理的超类ctor的所有参数(如果有的话)都进入args
形式的proxy
向量(第二个参数):
(proxy [SomeClass SomeInterface-1 ...] [ctor-arg-1 ...]
; method impls follow
...
)
有关详细信息,请参阅(doc proxy)
。