2011-07-08 47 views
1

我正在使用gen-class來編寫Clojure類。我有一個「狀態」欄,我想在下面的代碼來訪問:將類型提示添加到Clojure gen-class狀態訪問

(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

您必須導入您的班級或完全限定其名稱。然後^DateButton暗示將起作用並消除反射。