clojure符号名称中的美元符号($)

clojure符号名称中的美元符号($),clojure,Clojure,我一直在编写clojure解析器,遇到了以下语法: (defn key "Returns the key of the map entry." {:added "1.0" :static true} [^java.util.Map$Entry e] (. e (getKey))) 这里的“$”是什么意思?这种语法在元数据之外有什么用途吗?这是访问Clojure中嵌套类的方法。在这种情况下,您正在访问 在Java中,您只需编写Java.util.Map.Entry,在C

我一直在编写clojure解析器,遇到了以下语法:

(defn key
  "Returns the key of the map entry."
  {:added "1.0"
   :static true}
  [^java.util.Map$Entry e]
    (. e (getKey)))

这里的“$”是什么意思?这种语法在元数据之外有什么用途吗?

这是访问Clojure中嵌套类的方法。在这种情况下,您正在访问

在Java中,您只需编写
Java.util.Map.Entry
,在Clojure中您需要使用美元符号:
Java.util.Map$Entry

从:

“.”特殊形式是访问Java的基础。可以将其视为成员访问操作员,和/或读作“在范围内”

如果第一个操作数是解析为类名的符号,则该访问被视为是对命名类的静态成员的访问。请注意,根据JVM规范,嵌套类被命名为
封闭类$NestedClass
。否则,将假定它是实例成员,并计算第一个参数以生成目标对象