我需要实现自定义ResultHandler
,但我对如何将自定义类实际集成到软件包中感到困惑。
我已经读过这个:http://elki.dbs.ifi.lmu.de/wiki/HowTo/InvokingELKIFromJava但我的问题是你是如何实现一个自定义结果处理程序,以便它显示在GUI中?
我能想到的唯一方法是提取elki.jar包并手动将我的自定义类插入到源代码中,然后重新震动包。但是我很确定这不是它的目的。
此外,在我的resulthandler中,我需要将所有行输出到单个文本文件,并显示每行所属的集群。关于如何实现这一目标的提示如何?
答案 0 :(得分:1)
这里有两个问题。
为了通过UI(MiniGUI和命令行)使您的类可实现,这些类必须实现我们的Parameterization API。您的类 instantiable 基本上有两种选择:
public
构造函数,不带参数(用户界面将不知道如何设置参数!)static class Parameterizer
为了将您的类添加到自动完成(下拉菜单),这些类必须由MiniGUI / CLI /其他UI 发现。 ELKI使用两种发现方法:
.jar
个文件,它会读取META-INF/elki/interfacename
个服务文件。这是一种经典的服务加载器方法;除了我们也允许订购实例。.class
个文件,并检查它们。这主要是为了开发时间,以避免必须一直更新服务文件。出于性能原因,我们不检查.jar
文件的内容;这些都应该使用服务文件。您不需要将您的班级列入下拉菜单 - 您始终可以输入完整的班级名称。如果这不起作用,将名称添加到服务文件也无济于事,但ELKI可能根本找不到该类,或者无法实例化它。
还有一个tutorial on implementing a custom result handler,但它没有讨论如何将其添加到菜单中。在“开发模式”中 - 当文件夹中包含.class
文件时 - 它会自动显示。