2015-05-07 8 views
5

Ich versuche Zugriff auf eine statische innere Klassenmethode, aber ich kann nicht den richtigen Weg finden.Zugriff auf eine statische Java-Klasse mit Clojure

Ich brauche diese Java-Code in Clojure schreiben:

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

Mein Code ist:

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

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

Und das ist der Fehler:

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

Ich bin mit der opentok Java library und ich verstehe nicht, wie man auf die mediaMode-Methode zugreifen kann.

Antwort

6

Ihr Java-Code funktioniert nicht. Um das Problem zu beheben, fügen Sie das Schlüsselwort new zwischen = und SessionProperties.Builder() hinzu. Es sollte sein:

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

Sie können dies in Clojure wie folgt tun.

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 [email protected]> 
Verwandte Themen