java - 在 Clojure 中覆盖 java 父类(super class)方法

标签 java clojure overriding javafx

我正在按照 TableView 示例做一些 JavaFX 的事情。在原始 java 中,作者 @Override 的几个 TableCell 类方法是他直接派生的,而且 @OverrideupdateItem 方法,它在类层次结构中向上 2 层,属于 Cell 类。

有什么方法可以在 Clojure 中轻松做到这一点?目前我只是在做 proxy 但我可以在必要时使用 :gen-class 。我以为我在某处读到你只能覆盖 Clojure 中的直接基类。

(defn make-editing-cell []
  (let [textField (atom nil)]
    (proxy [TableCell] []
      (startEdit []
        (proxy-super startEdit)
        (println "start editing"))

      (cancelEdit []
        (proxy-super cancelEdit)
        (println "cancel editing"))

      (updateItem [item empty]
        ;(proxy-super updateItem  ) ;; This causes runtime error No Matching Field Found
        (if empty
          (do (println "empty!")
              (doto this
                (.setText nil)
                (.setGraphic nil)))
          (do (println "not empty!")
              (if (.isEditing this)
                (do (println "editing")
                    (if (not @textField)
                      (.setText @textField (.toString (.getItem this))))
                    (doto this
                      (.setGraphic @textField)
                      (.setContentDisplay ContentDisplay/GRAPHIC_ONLY)))
                (do (println "not editing")
                    (println this)
                    (println (.getItem this))
                    (comment
                      (doto this
                        (.setText (.toString (.getItem this)))
                        (.setContentDisplay ContentDisplay/GRAPHIC_ONLY)))))))
        (println "updating item" item empty)))))

最佳答案

我需要将参数 itemempty 传递给 proxy-super 调用...所以 (proxy-super updateItem项为空)

关于java - 在 Clojure 中覆盖 java 父类(super class)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18410160/

相关文章:

派生泛型的java删除

java - 强制重写类时调用基类版本方法,否则抛出异常

clojure - 这两个 clojure 函数之间有什么区别和问题?

java - 如何让 Eclipse 智能感知自动完成成员名称?

java - 无法从实体类 Hibernate 4.2.7 Websphere 8.5.5 oracle 11g 创建表

java - 无法在 Eclipse 中使用库制作可执行 JAR 文件

string - 用 Clojure map 中的一组字符替换字符串中的字符

clojure - 如何在 Light Table 中自动智能缩进文件

Scala 隐式和覆盖问题

java - 查询在 mysql 和 php 中运行良好,但在 java 中运行不正常