Problem Erweiterung einer Klasse in Clojure: ClassFormatError: Doppelte Feld Name und Unterschrift
Frage
Ich versuche JButton mit Clojure zu verlängern, aber ich lief in ein Problem, wenn ich versuche, meine eigenen Konstrukteuren zu erstellen. Jedes Mal, wenn ich :constructors
mit :gen-class
verwenden halte ich einen bekommen „ClassFormatError: Duplizieren Feldnamen & Signatur“ angezeigt, wenn ich versuche, meine Klasse zu instanziieren.
I denkt Ich bitte das Clojure docs richtig . Mache ich etwas falsch?
Beispiel:
(ns test.gui.button
(:gen-class
:extends javax.swing.JButton
:constructors {[] [String]}
:init init))
(defn -init []
[["Click Me"] nil])
Lösung
JButton
erstreckt javax.swing.AbstractButton
, die bereits eine geschützte init
Methode. Wenn Sie Ihre Clojure-init-Funktion umbenennen, zum Beispiel my-init
das Problem ist weg:
(ns test.gui.button
(:gen-class
:extends javax.swing.JButton
:constructors {[] [String]}
:init my-init))
(defn -my-init []
[["Click Me"] nil])
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow