我正在尝试使用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])
答案 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])