Fournir un constructeur avec Clojure reify
-
09-10-2019 - |
Question
Lorsque vous utilisez reify
Clojure, comment puis-je fournir une expression pour le constructeur?
Sinon, comment puis-je transmettre des arguments au constructeur de la classe de base?
La solution
Vous ne pouvez pas utiliser reify
aux classes de sous-classe et instancier - il est seulement destiné à être utilisé avec les protocoles et les interfaces. (Vous pouvez fournir des implémentations de méthodes de Object
, cependant.)
Pour instancier les sous-classes anonymes de classes arbitraires et / ou d'interfaces, utilisez proxy
. Tous les arguments à l'cteur superclasse d'une procuration, le cas échéant, allez dans le vecteur de args
(deuxième argument) de la forme proxy
:
(proxy [SomeClass SomeInterface-1 ...] [ctor-arg-1 ...]
; method impls follow
...
)
Voir (doc proxy)
pour plus de détails.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow