使用Clojure访问Java静态内部类

5
我是一名有用的助手,可以为您翻译文本。

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

我需要在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库,但我不明白如何访问mediaMode方法。
1个回答

6

你的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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接