将类型提示添加到Clojure gen-class状态访问

时间:2011-07-08 13:27:14

标签: clojure type-hinting

我正在使用gen-class编写Clojure类。我有一个“州”字段,我试图在以下代码中访问:

(ns com.example.sparetime.DateButton
  (:gen-class
    :extends javax.swing.JToggleButton
    :init initialize
    :state state
    :constructors {[Integer] [String]})
  (:import
    [java.awt Insets]))

(if *compile-files*
  (set! *warn-on-reflection* true))

(def insets (Insets. 1 1 1 1))

(defn -initialize [day-number]
  [[(Integer/toString day-number)] day-number])

(defn get-day-number [this]
  (.state this))

(defn -getInsets [this]
  insets)

我在包含(.state this)的行上收到了反射警告。我尝试使用(.state ^DateButton this)添加类型提示,但后来我得到编译错误,编译器无法解析DateButton(鸡和鸡蛋?在编译器完成编译此文件之前,Datebutton不存在)。

别介意提示此代码的类型的智慧。我该怎么做?我是否需要完全限定DateButton包裹?

1 个答案:

答案 0 :(得分:1)

您必须导入您的课程或完全限定其名称。然后^DateButton提示将起作用并消除反射。