我试图在drools中定义一个简单的函数:
function void difference(List<String> fileOld, List<String> fileNew)
{
ArrayList<String> add = new ArrayList<String>(fileNew);
add.removeAll(fileOld);
System.out.println("files Added: " + add);
ArrayList<String> remove = new ArrayList<String>(fileOld);
remove.removeAll(fileNew);
System.out.println("files Removed: " + remove);
}
但是它说在构建函数时无法解析类型List。 java.lang.ClassNotFoundException:无法找到类'List'] 无法对类型为FileData的非静态方法getFileOld()进行静态引用无法对类型为FileData的非静态方法getFileNew()进行静态引用
我的规则是:
rule "files are equal"
when
FileData(fileOld == fileNew)
then
System.out.println("files are equal");
end
rule "files not equal"
when
not FileData(fileOld == fileNew)
then
System.out.println("files are not equal");
difference(FileData.getFileOld(),FileData.getFileNew());
end
fileOld和fileNew是两个不同实例的文件夹中的文件名列表。我试图找到fileOld和fileNew之间的区别,并显示添加/删除的文件列表。
答案 0 :(得分:0)
在DRL中,情况与Java中的情况非常相似。您可以使用“import”或完整的类名:
import java.util.List
import java.util.ArrayList
function void difference(java.util.List<String> fileOld,
java.util.List<String> fileNew)
阅读Drools文档并没有什么坏处。
答案 1 :(得分:0)
无法找到班级'列表']不能 从中获取对静态方法getFileOld()的静态引用 type FileData无法对非静态方法进行静态引用 来自FileData
类型的getFileNew()
从您问题的上述陈述中,您似乎正在通过FileData访问非静态方法(我认为它是一个类)。如果方法是非静态的,那么您无法访问您的方法lisk this
Classname.nonstatic_method(不允许)
Classname.static_method(允许)
通过使两种方法保持静态来尝试您的代码。 或者创建FileData的对象,然后访问非静态方法