Проблема расширения класса в Clojure: ClassFormatError: повторяющееся имя поля и подпись - PullRequest
4 голосов
/ 27 октября 2009

Я пытаюсь расширить JButton с помощью Clojure, но столкнулся с проблемой, когда пытался создать свои собственные конструкторы. Всякий раз, когда я использую :constructors с :gen-class, я получаю сообщение «ClassFormatError: Duplicate name field & signature» при попытке создать экземпляр моего класса.

Я думаю Я правильно следую Clojure docs . Я что-то не так делаю?

Пример:

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

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

1 Ответ

6 голосов
/ 07 ноября 2009

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])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...