Clojure gen类可以重写受保护的Java方法吗?

Clojure gen类可以重写受保护的Java方法吗?,clojure,gen-class,Clojure,Gen Class,我试图使用Clojure的Swing,我被gen类搞糊涂了,我无法从文档中判断这是否可行-paintComponent是JPanel上的受保护方法,我可以覆盖它,但是当我试图调用公开的超类的方法时,我得到java.lang.IllegalArgumentException:找不到匹配的方法:parentPaintComponent for class project.PicturePanel。有人能解释一下为什么我似乎无法使用这种方法吗 (ns project.PicturePanel (:

我试图使用Clojure的Swing,我被
gen类
搞糊涂了,我无法从文档中判断这是否可行-
paintComponent
JPanel
上的受保护方法,我可以覆盖它,但是当我试图调用公开的超类的方法时,我得到
java.lang.IllegalArgumentException:找不到匹配的方法:parentPaintComponent for class project.PicturePanel
。有人能解释一下为什么我似乎无法使用这种方法吗

(ns project.PicturePanel
  (:gen-class
    :extends javax.swing.JPanel
    :name project.PicturePanel
    :exposes-methods {paintComponent parentPaintComponent}))

(defn -paintComponent [this g]
  (println this)
  (println g)
  (.parentPaintComponent this g))

对!!如果确保编译的.class文件是最新的,则代码可以正常工作。尝试重新编译它们

你知道跷跷板吗?我想试试跷跷板,但我肯定想更好地理解Java互操作的东西。嗯,我刚刚测试了这个,它对我来说非常好。能否提供有关项目设置和调用代码的更多详细信息?你使用AOT编译了吗?A.韦伯-谢谢你的提示!事实证明,“lein run”并没有重新编译这个类,所以我处于一个有趣的状态,新的paintComponent方法正在被解释,但这个类的其余部分是一个旧的、过时的二进制文件。在我重新运行“lein compile project.PicturePanel”之后,一切都开始工作了!