我需要实现一个自定义的 ResultHandler
,但我对如何将我的自定义类实际集成到软件包中感到困惑。
我读过这个:http://elki.dbs.ifi.lmu.de/wiki/HowTo/InvokingELKIFromJava但我的问题是您打算如何实现自定义结果处理程序以使其显示在 GUI 中?
我能想到的唯一方法是提取 elki.jar 包并手动将我的自定义类插入到源代码中,然后重新打包该包。然而,我相当确定这不是它应该完成的方式。
此外,在我的结果处理程序中,我需要将所有行输出到一个文本文件,并显示每行所属的簇。如何实现这一目标的提示?
最佳答案
这里有两个问题。
为了通过 UI(MiniGUI 和命令行)使您的类可实例化,这些类必须实现我们的 Parameterization应用程序接口(interface)。使您的类可实例化基本上有两种选择:
- 添加一个
public
构造函数没有参数(UI 将不知道如何设置您的参数!) - 添加一个处理参数化的内部
静态类Parameterizer
- 添加一个
为了将您的类添加到自动完成(下拉菜单),这些类必须被 MiniGUI/CLI/其他 UI 发现。 ELKI 使用两种发现方法:
- 对于
.jar
文件,它读取META-INF/elki/interfacename
服务文件。这是一种经典的服务加载器方法;除了我们还允许订购实例。 - 仅针对目录,ELKI 还将扫描所有
.class
文件,并检查它们。这主要用于开发时间,以避免必须一直更新服务文件。出于性能原因,我们不检查.jar
文件的内容;这些预计将使用服务文件。
- 对于
您不需要在下拉菜单中显示您的类(class) - 您可以随时键入完整的类(class)名称。如果这不起作用,将名称添加到服务文件也无济于事,但 ELKI 要么根本找不到该类,要么无法实例化它。
还有一个tutorial on implementing a custom result handler , 但它没有讨论如何将它添加到菜单中。在“开发模式”下 - 当有一个包含 .class
文件的文件夹时 - 它会自动显示。
关于cluster-analysis - ELKI:实现自定义 ResultHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25346743/