从Clojure导入Java类中的Java类

D. *_*aro 2 java clojure

如何从Clojure导入位于另一个Java类中的Java类?

我试图导入的类是位于LibGDX库中的Pixmap.Format.由于play-clj处理与LibGDX for Clojure的集成,因此从LibGDX本身实际导入类没有任何问题.问题在于导入位于Pixmap类中的Format类.

我尝试了几种不同的东西:

; This I have tried
(ns pfft.test 
    (:import com.badlogic.gdx.graphics Pixmap.Format))

; And this
(ns pfft.test 
    (:import com.badlogic.gdx.graphics Pixmap/Format))

; This
(ns pfft.test 
    (:import com.badlogic.gdx.graphics.Pixmap.Format))
Run Code Online (Sandbox Code Playgroud)

我也尝试过这样调用这个类:

(Pixmap/Format/RGBA8888)
Run Code Online (Sandbox Code Playgroud)

但Clojure告诉我,没有这样的领域,显然是这样.

这也是行不通的:

((Pixmap/Format)/RGBA8888)
Run Code Online (Sandbox Code Playgroud)

作为......

/RGBA8888
Run Code Online (Sandbox Code Playgroud)

......根本不被承认.

Sam*_*tep 6

您正在寻找的分隔符是$,因此您可以像这样导入嵌套类:

(import com.badlogic.gdx.graphics.Pixmap$Format)
Run Code Online (Sandbox Code Playgroud)

或者像这样:

(import (com.badlogic.gdx.graphics Pixmap$Format))
Run Code Online (Sandbox Code Playgroud)

然后你可以访问这样的静态字段Pixmap$Format:

Pixmap$Format/RGBA8888
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅此Stack Overflow问题Clojure文档的这一部分.