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

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

我能想到的唯一方法是解压缩elki.jar包,然后将自定义类手动插入源代码,然后重新打包该包。但是,我相当确定这不是要完成的方式。

另外,在我的结果处理程序中,我需要将所有行输出到单个文本文件中,并显示每行所属的簇。如何获得该技巧的提示?

最佳答案

这里有两个问题。


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


添加不带参数的public构造函数(UI将不知道如何设置参数!)
添加一个内部static class Parameterizer来处理参数化

为了将您的类添加到自动完成功能(下拉菜单),必须由MiniGUI / CLI /其他UI查找这些类。 ELKI使用两种发现方法:


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



您不需要将班级放在下拉菜单中-您始终可以输入完整的班级名称。如果这样做不起作用,则将名称添加到服务文件也无济于事,但是ELKI根本找不到该类,或者无法实例化它。

还有一个tutorial on implementing a custom result handler,但是没有讨论如何将其添加到菜单中。在“开发模式”下-当文件夹包含.class个文件时-它会自动显示。

关于cluster-analysis - ELKI:实现自定义ResultHandler,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25346743/

10-12 22:00