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

Java 在运行时使用Class.forName加载Weka类,java,string,weka,Java,String,Weka,我不想像这样将Weka分类器的名称硬编码到我的Java中: Classifier cls = new J48(); 其中分类器是Weka类 相反,我更喜欢将值“J48”存储在数据库表varchar列中 关于如何将包含“J48”的Java字符串转换为Weka类型,有什么想法吗?我尝试了一些失败的事情,比如: cls = Class.forName("weka.classifiers.trees.J48;"); J48是决策树的Weka类的名称。快速解决方案: Object obj = Cl

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

Classifier cls = new J48();  
其中分类器是Weka类

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

关于如何将包含“J48”的Java字符串转换为Weka类型,有什么想法吗?我尝试了一些失败的事情,比如:

cls = Class.forName("weka.classifiers.trees.J48;");
J48是决策树的Weka类的名称。

快速解决方案:

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

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

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


有一个更好的单线版本

Classifier classifier = AbstractClassifier.forName(className, options);
或以下内容适用于更新版本的Weka

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