Проблема расширения класса в Clojure: ClassFormatError: повторяющееся имя поля и подпись
Я пытаюсь расширить JButton с помощью Clojure, но столкнулся с проблемой, когда пытался создать свои собственные конструкторы. Всякий раз, когда я использую :constructors
с :gen-class
Я продолжаю получать сообщение "ClassFormatError: Duplicate name field &signature" при попытке создать экземпляр моего класса.
Я думаю, что я следую документации Clojure должным образом. Я делаю что-то неправильно?
Пример:
(ns test.gui.button
(:gen-class
:extends javax.swing.JButton
:constructors {[] [String]}
:init init))
(defn -init []
[["Click Me"] nil])
1 ответ
Решение
JButton
продолжается javax.swing.AbstractButton
который уже имеет защищенный init
метод. Если вы переименуете свою функцию Clojure-init, например, в my-init
проблема исчезла:
(ns test.gui.button
(:gen-class
:extends javax.swing.JButton
:constructors {[] [String]}
:init my-init))
(defn -my-init []
[["Click Me"] nil])