使用Class.forName在运行时加载Weka类

时间:2013-02-08 14:19:47

标签: java string weka

我不想像这样将Weka分类器的名称硬编码到我的Java中:

Classifier cls = new J48();  

分类符是Weka类。

相反,我更愿意将值“J48”存储在数据库表varchar列中。

关于如何将包含“J48”的Java字符串转换为Weka类型的任何想法?我没有成功尝试这样的事情:

cls = Class.forName("weka.classifiers.trees.J48;");

J48是决策树的Weka类的名称。

3 个答案:

答案 0 :(得分:2)

快速解决方案:

Object obj = Class.forName("weka.classifiers.trees.J48").newInstance();
Classifier cls = Class.forName("weka.classifiers.trees.J48").cast(obj);

J48应该有0个param构造函数。

答案 1 :(得分:1)

有一个更好的单行版

Classifier classifier = AbstractClassifier.forName(className, options);

或者以下版本的Weka

Classifier classifier = Classifier.forName(className, options);

答案 2 :(得分:0)

技术上答案相同,但只是一个较短的单行版本

Classifier cls = (Classifier) Class.forName("weka.classifiers.trees.J48").newInstance();