使用 Clojure 访问 Java 静态内部 class

Access to a Java static inner class with Clojure

我正在尝试访问静态内部 class 方法,但找不到正确的方法。

我需要用 Clojure 编写这段 java 代码:

SessionProperties sessionProperties = SessionProperties.Builder().mediaMode(MediaMode.ROUTED).build();

我的代码是:

(:import [com.opentok OpenTok MediaMode SessionProperties SessionProperties$Builder]))

(def sessionProperties (.build (.mediaMode SessionProperties$Builder MediaMode/ROUTED))

这是错误:

java.lang.IllegalArgumentException: No matching method found: mediaMode for class java.lang.Class

我正在使用 opentok Java library 但我不明白如何访问 mediaMode 方法。

您的 Java 代码无效。要修复补救措施,请在 =SessionProperties.Builder() 之间添加 new 关键字。应该是:

SessionProperties sessionProperties = new SessionProperties.Builder()
  .mediaMode(MediaMode.ROUTED)
  .build();

您可以按如下方式在 Clojure 中执行此操作。

user> (import '(com.opentok SessionProperties$Builder MediaMode))
com.opentok.MediaMode

user> (def session-properties (.. (SessionProperties$Builder.)
                                  (mediaMode MediaMode/ROUTED)
                                  build))
#'user/session-properties

user> session-properties
#<SessionProperties com.opentok.SessionProperties@54fc58ee>