从Clojure / ClojureCLR中的Java / C#子类调用非虚拟保护方法

时间:2013-03-08 09:32:04

标签: clojure clojureclr

使用gen-class在Clojure中创建子类时,可以通过exposes-methods公开受保护的虚拟(非最终)方法,但是它是通过覆盖实现的,这对于非虚拟(最终)方法不起作用。

通过反射以这种方式调用受保护方法的唯一方法是什么?

可以比gen-class更好地实现或代理吗?

1 个答案:

答案 0 :(得分:1)

这结果是clojure-clr中的一个错误。它可能在JVM版本中运行良好。如果Clojure受到保护/公开,它们允许调用非虚拟/最终方法。但是,我试图调用的方法是内部保护的,这实际上意味着受保护的内部。 clojure-clr错误地将其解释为受保护的内部,内部含义只能在同一个程序集中访问。因此,我的方法调用失败了。

这已在最新版本的clojure-clr中修复。

相关问题