Предоставить конструктору Clojure reify
Когда используешь reify
в Clojure, как я могу предоставить выражение для конструктора?
В качестве альтернативы, как я могу передать аргументы конструктору базового класса?
1 ответ
Решение
Вы не можете использовать reify
создавать подклассы и создавать экземпляры классов - он предназначен только для использования с протоколами и интерфейсами. (Вы можете предоставить реализации методов Object
, хоть.)
Для создания экземпляров анонимных подклассов произвольных классов и / или интерфейсов используйте proxy
, Все аргументы суперкласса ctor прокси-сервера, если таковые имеются, идут в args
вектор (второй аргумент) proxy
форма:
(proxy [SomeClass SomeInterface-1 ...] [ctor-arg-1 ...]
; method impls follow
...
)
Увидеть (doc proxy)
Больше подробностей.