我正在尝试使用我找到的一些资源编写一个播放声音文件的函数。代码如下:
(defn play [file] (let [songp (URL. (.getCodeBase) file) song (.newAudioClip songp)] (. song play)))
问题是,(。getCodeBase)是一个格式错误的成员表达式。我不知道该怎么做。你怎么称呼这样的方法?在我看过的Java代码中,它被简单地称为:
getCodeBase()
我错过了什么吗?
答案 0 :(得分:4)
.getCodeBase
是一个实例方法调用,因此需要一个接收器(在Java之前的点之前)。如果您的Java代码只是getCodeBase()
,那么有两种可能性:它实际上意味着this.getCodeBase()
,在这种情况下,您应该弄清楚该方法中的this
是什么,并将其指定为第一个论点:
(.getCodeBase obj)
或者,它可以是该类(或其基类之一)的静态方法,在这种情况下,您应该使用静态方法调用表达式:
(ClassName/getCodeBase)
使用足够的上下文发布您尝试翻译的Java代码可能有助于更详细地回答这个问题。