我在 Clojure 中使用代理来扩展 Java 类。我需要在超类中设置一个字段,我该怎么做?下面的代码不起作用。
(proxy [BasicPlayer] []
(open [url]
(set! super/m_dataSource url)))
来自的文档proxy:
请注意,虽然方法 fns 可以
被提供来覆盖受保护的方法,它们没有其他访问权限
受保护的成员,也不是超级成员,因为这些能力不能
代理。
抱歉,听起来你运气不好。您可以使用以下方式调用受保护的超类方法proxy-super
,但我认为仅此而已。
你可能会有更好的运气gen-class
。大致如下:
(ns my.Player
(:gen-class
:extends BasicPlayer
:exposes {m_dataSource {:set -setDataSource}})
(defn -open [this url]
(-setDataSource this url))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)