Возникли проблемы с вызовом getCodeBase в Clojure
Я пытаюсь написать функцию для воспроизведения звукового файла один раз, используя найденные ресурсы. Код выглядит следующим образом:
(defn play [файл] (пусть файл [songp (URL. (.getCodeBase))) песня (.newAudioClip songp)] (. Воспроизведение песни)))
Проблема в том, что (.getCodeBase) является некорректным выражением члена. Я не уверен, что делать. Как вы называете такой метод? В коде Java, который я посмотрел, он просто назывался так:
getCodeBase()
Я что-то пропустил?
1 ответ
.getCodeBase
является вызовом метода экземпляра, и как таковой требует приемника (что идет перед точкой в Java). Если ваш Java-код был просто getCodeBase()
то есть две возможности: либо это на самом деле означает this.getCodeBase()
в этом случае вы должны выяснить, что this
был в этом методе, и укажите его в качестве первого аргумента:
(.getCodeBase obj)
Или это может быть статический метод этого класса (или один из его базовых классов), и в этом случае вы должны использовать вместо этого выражение вызова статического метода:
(ClassName/getCodeBase)
Публикация кода Java, который вы пытаетесь перевести, с достаточным контекстом, вероятно, поможет ответить на этот вопрос более подробно.