我正在构建一个应用程序,从这个网站http://jccd.sourceforge.net/getting_started.html实现一个名为Java代码克隆检测器(JCDD)的API。它给了我一个我不理解的错误。代码如下:
public void jalankanAlgoritma(File FileUtama, List<String> fileJlist) {
APipeline<?> detector = new ASTDetector();
List<String> jListListnya;
if (!jListListnya.isEmpty() || jListListnya == null) {
// looping of compare
for (String JlistList1 : jListListnya) { //Jlist1 is a swing component
JCCDFile[] files = {
new JCCDFile(new File(FileUtama.getAbsolutePath())),
new JCCDFile(new File(JlistList1))};
detector.setSourceFiles(files);
detector.addOperator(new GeneralizeMethodDeclarationNames()); // Method Names
detector.addOperator(new GeneralizeVariableNames()); //Variable names
detector.addOperator(new GeneralizeClassDeclarationNames()); // Class name
detector.addOperator(new AcceptFileNames()); // This is error
APipeline.printSimilarityGroups(detector.process());
}
}
}
netbeans告诉我No suitable method found for addOperator(AcceptFileNames). Method Apipeline.addOperator(Aproccessor is not applicable)
这句话是什么意思?如何解决这个问题?
addOperator
方法需要一个类型为GeneralizeClassDeclarationNames
超类的参数。当您传递AcceptFileNames
类型的参数时,这是不正确的,因为没有方法addOperator
与作为参数的AcceptFileNames
的方法签名相匹配。您需要确保acceptfilename类继承自与GeneralizeClassDeclarationNames
相同的类。
阅读重载的概念