Access to a Java static inner class with Clojure

亡梦爱人 提交于 2019-12-10 14:31:46

问题


I'm trying access to a static inner class method, but I can't find the right way.

I need to write this java code in Clojure:

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

My code is:

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

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

And this is the error:

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

I'm using the opentok Java library and I don't understand how to access to mediaMode method.


回答1:


Your Java code does not work. To fix the remedy, add the new keyword between = and SessionProperties.Builder(). It should be:

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

You can do this in Clojure as follows.

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>


来源:https://stackoverflow.com/questions/30102547/access-to-a-java-static-inner-class-with-clojure

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!