当使用gen-class在Clojure中创建一个子类时,您可以通过exposes-method公开受保护的虚(非最终)方法,但是它是通过覆盖实现的,这不适用于非虚(最终)方法。
这是通过反射调用受保护方法的唯一方法吗?
reify或proxy能比gen-class做得更好吗?
发布于 2013-03-15 23:38:49
这被证明是clojure-clr中的一个bug。它在JVM版本中可能工作得很好。Clojure允许调用非虚拟/最终方法,如果它们是受保护的/公共的。然而,我试图调用的方法是protected internal,这实际上意味着protected或internal。clojure-clr错误地将其解释为受保护的和内部的,内部意味着只能在同一程序集中访问。由于这个原因,我的方法调用失败了。
在最新版本的clojure-clr中已修复此问题。
https://stackoverflow.com/questions/15290726
复制相似问题