首页 > 解决方案 > 如何从clojure访问moa分类器中hoeffding树的treeRoot字段[受保护]

问题描述

我正在使用 moa 分类器生成 hoeffding 树,它使用 getModelDescription 为我提供了它的描述字符串,我想通过获取 root 和获取 child 等来解析树。为了获取 root,我尝试使用(.treeRoot moa-classifier)where treeRoot 是 hoeffding 的受保护字段tree 和 moa-classifier 是获得的树,但我收到以下错误“找不到匹配字段:类 moa.classifiers.trees.HoeffdingTree 的 treeRoot”

标签: clojure

解决方案


我没有用你提到的特定类和字段测试我将要描述的技术,但是我已经将它用于几个具有私有字段的 Java 类。

Java 方法 setAccessible 和 Java 反射 API 可用于使某些字段可访问,默认情况下它们不可访问:https ://github.com/clojure/core.rrb-vector/blob/2ce54cc888cd2a5e58f5f54ae1eae1d5276e966d/src/main/clojure /clojure/core/rrb_vector/debug_platform_dependent.clj#L16-L21

然后您可以在 Field 对象和类的实例上使用方法“get”:https ://github.com/clojure/core.rrb-vector/blob/2ce54cc888cd2a5e58f5f54ae1eae1d5276e966d/src/main/clojure/clojure/core/ rrb_vector/debug_platform_dependent.clj#L113


推荐阅读