Problem Erweiterung einer Klasse in Clojure: ClassFormatError: Doppelte Feld Name und Unterschrift

StackOverflow https://stackoverflow.com/questions/1627747

  •  06-07-2019
  •  | 
  •  

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])
War es hilfreich?

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
scroll top