Problème lors de l'extension d'une classe dans Clojure: ClassFormatError: nom de champ et signature en double
Question
J'essaie d'étendre JButton avec Clojure, mais j'ai rencontré un problème lorsque j'ai essayé de créer mes propres constructeurs. Chaque fois que j'utilise : constructeurs
avec : gen-class
, je reçois régulièrement un " ClassFormatError: nom du champ en double & signature; " message lorsque j'essaie d'instancier ma classe.
Je pense que je suis les documents Clojure correctement. Est-ce que je fais quelque chose de mal?
Exemple:
(ns test.gui.button
(:gen-class
:extends javax.swing.JButton
:constructors {[] [String]}
:init init))
(defn -init []
[["Click Me"] nil])
La solution
JButton
étend javax.swing.AbstractButton
qui a déjà un élément protégé init
. Si vous renommez votre fonction Clojure-init en my-init
, par exemple, le problème a disparu:
(ns test.gui.button
(:gen-class
:extends javax.swing.JButton
:constructors {[] [String]}
:init my-init))
(defn -my-init []
[["Click Me"] nil])
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow