2009-10-26 7 views
4

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 :constructors avec :gen-class je reçois toujours un message "ClassFormatError: Dupliquer le nom du champ &" lorsque j'essaye d'instancier ma classe. Je suis le Clojure docs correctement. Est-ce que je fais quelque chose de mal?Problème d'extension d'une classe dans Clojure: ClassFormatError: nom et signature de champ en double

Exemple:

(ns test.gui.button 
    (:gen-class 
    :extends javax.swing.JButton 
    :constructors {[] [String]} 
    :init init)) 

(defn -init [] 
    [["Click Me"] nil]) 
+1

-je obtenir le même résultat, aucune idée pourquoi si. –

Répondre

6

JButton étend javax.swing.AbstractButton qui a déjà un procédé init protégé. Si vous renommez votre fonction Clojure-init, par exemple, my-init 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])