我正在使用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
包裹?
答案 0 :(得分:1)
您必须导入您的课程或完全限定其名称。然后^DateButton
提示将起作用并消除反射。