我正在尝试使用发现的一些资源编写一次播放声音文件的功能。代码如下:
(defn play [file] (let [songp (URL. (.getCodeBase) file) song (.newAudioClip songp)] (. song play)))
The problem is, (.getCodeBase) is a malformed member expression. I'm not sure what to do. How do you call a method like this? In the Java code I looked at, it was simply called like so:
getCodeBase()
我想念什么吗?
最佳答案
.getCodeBase
是一个实例方法调用,因此需要一个接收器(Java中点之前的内容)。如果您的Java代码只是getCodeBase()
,则有两种可能性:要么实际上就是this.getCodeBase()
,在这种情况下,您应该弄清楚该方法中的this
,并将其指定为第一个参数:
(.getCodeBase obj)
或者,它可以是该类(或其基类之一)的静态方法,在这种情况下,您应该使用静态方法调用表达式:
(ClassName/getCodeBase)
在足够的上下文中发布您要转换的Java代码,可能会有助于更详细地回答这一问题。