2013-02-08 71 views
1

加載了Weka類,我不想給了Weka分類的名稱硬編碼到我的Java這樣的:使用Class.forName在運行時

Classifier cls = new J48(); 

如果分類是Weka的類。

相反,我寧願將值「J48」存儲在數據庫表varchar列中。

有關如何將包含「J48」的Java字符串轉換爲Weka類型的任何想法?我嘗試以下方法失敗:

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

J48是決策樹的Weka類的名稱。

回答

2

快速的解決方案:

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

J48應該有0 PARAM構造。

+0

謝謝。非常感激! – 2013-02-08 15:16:22

0

這在技術上是相同的答案,而只是一個短一行版本

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

有一個更好的行版本

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

或者爲Weka中的較新版本以下

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