在Clojure中扩展类的问题:ClassFormatError:重复的字段名称和签名

时间:2009-10-26 22:39:23

标签: oop clojure gen-class

我正在尝试使用Clojure扩展JButton,但是当我尝试创建自己的构造函数时遇到了问题。每当我将:constructors:gen-class一起使用时,当我尝试实例化我的类时,我会不断收到“ClassFormatError:Duplicate field name& signature”消息。

认为我正在关注Clojure docs。我做错了吗?

示例:

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

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

1 个答案:

答案 0 :(得分:6)

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])