3

我需要实现一个自定义ResultHandler,但我对如何将我的自定义类实际集成到软件包中感到困惑。

我读过这个:http ://elki.dbs.ifi.lmu.de/wiki/HowTo/InvokingELKIFromJava但我的问题是你打算如何实现一个自定义结果处理程序,以便它显示在 GUI 中?

我能想到的唯一方法是提取 elki.jar 包并将我的自定义类手动插入到源代码中,然后重新压缩包。但是,我相当确定这不是它应该做的方式。

此外,在我的结果处理程序中,我需要将所有行输出到单个文本文件中,并显示每行所属的集群。如何提示我如何实现这一目标?

4

1 回答 1

1

这里有两个问题。

  1. 为了使您的类可以通过 UI(MiniGUI 和命令行)实例化,这些类必须实现我们的参数化API。基本上有两种选择可以使您的类可实例化

    • 添加不带public参数的构造函数(UI 不知道如何设置参数!)
    • 添加static class Parameterizer处理参数化的内部
  2. 为了将您的类添加到自动补全(下拉菜单),这些类必须被MiniGUI/CLI/其他 UI发现。ELKI 使用两种发现方法:

    • 对于.jar文件,它读取META-INF/elki/interfacename服务文件。这是一种经典的服务加载器方法;除了我们还允许订购实例。
    • 仅针对目录,ELKI 还将扫描所有.class文件并检查它们。这主要用于开发时间,以避免必须一直更新服务文件。出于性能原因,我们不检查.jar文件的内容;这些预计将使用服务文件。

您不需要您的班级出现在下拉菜单中 - 您可以随时键入完整的班级名称。如果这不起作用,将名称添加到服务文件也无济于事,但 ELKI 要么根本找不到类,要么无法实例化它。

还有一个关于实现自定义结果处理程序的教程,但它没有讨论如何将它添加到菜单中。在“开发模式”中 - 当有一个包含文件的文件夹时.class- 它会自动显示。

于 2014-08-18T08:11:39.467 回答