2009-07-27 7 views
1

私が見つけたリソースを使用して、サウンドファイルを再生する関数を作成しようとしています。コードは次のとおりです。ClojureでgetCodeBaseを呼び出すのに問題がある

 
(defn play [file] 
    (let [songp (URL. (.getCodeBase) file) 
    song (.newAudioClip songp)] 
    (. song play))) 

問題は、(.getCodeBase)が不正なメンバ式であることです。私は何をすべきか分からない。このような方法をどのように呼びますか?私が見たJavaコードでは、単にそう呼ばれていました:

getCodeBase() 

私に何か不足していますか?

答えて

4

.getCodeBaseはインスタンスメソッド呼び出しであり、受信機が必要です(これはJavaのドットの前にあります)。 Javaコードは、ちょうどgetCodeBase()た場合には、2つの可能性があります

(.getCodeBase obj) 

または:どちらかそれは実際にあなたがthisは、その方法にあったかを把握し、最初の引数として指定する必要があり、その場合には、this.getCodeBase()意味します、それはあなたが代わりに静的メソッド呼出し式を使用する必要があり、その場合には、静的そのクラスのメソッド(またはその基底クラスの1つ)、次のようになります。

(ClassName/getCodeBase) 

あなたが翻訳しようとしているJavaコードを投稿します十分な文脈で、これをより詳細に答えるのに役立つでしょう。

関連する問題