使用gen-class在Clojure中创建子类时,可以通过exposes-methods公开受保护的虚拟(非最终)方法,但是它是通过覆盖实现的,这对于非虚拟(最终)方法不起作用。
通过反射以这种方式调用受保护方法的唯一方法是什么?
可以比gen-class更好地实现或代理吗?
答案 0 :(得分:1)
这结果是clojure-clr中的一个错误。它可能在JVM版本中运行良好。如果Clojure受到保护/公开,它们允许调用非虚拟/最终方法。但是,我试图调用的方法是内部保护的,这实际上意味着受保护的或内部。 clojure-clr错误地将其解释为受保护的和内部,内部含义只能在同一个程序集中访问。因此,我的方法调用失败了。
这已在最新版本的clojure-clr中修复。