Предоставить конструктору Clojure reify - PullRequest
5 голосов
/ 06 декабря 2010

Как использовать reify в Clojure, как я могу предоставить выражение для конструктора?

В качестве альтернативы, как я могу передать аргументы конструктору базового класса?

1 Ответ

5 голосов
/ 06 декабря 2010

Вы не можете использовать reify для создания подклассов и создания экземпляров классов - он предназначен только для использования с протоколами и интерфейсами. (Вы можете предоставить реализации методов Object, хотя.)

Для создания экземпляров анонимных подклассов произвольных классов и / или интерфейсов используйте proxy. Все аргументы ctor суперкласса прокси-сервера, если таковые имеются, входят в вектор args (второй аргумент) формы proxy:

(proxy [SomeClass SomeInterface-1 ...] [ctor-arg-1 ...]
  ; method impls follow
  ...
  )

Подробнее см. (doc proxy).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...