我试图在pentaho水壶中的用户定义的Java类对象中声明一个ArrayList
对象。我在User Defined Java Class
:
import java.util.List;
import java.util.ArrayList;
List<String> where = new ArrayList<String>();
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException
{
return true;
}
但是当我测试这个课时,我收到一个错误:
Line 4, Column 6: Identifier expected
可能是什么问题?如果我注释掉List<String> where = new ArrayList<String>();
行,则代码效果很好。
答案 0 :(得分:6)
如Pentaho wiki Janino
所述,不支持通用。
另一点需要注意的是,Janino本质上是一个Java字节码生成器,它只支持Java 1.5规范的子集。要查看功能和限制的完整列表,请访问Janino主页。在撰写本文时,最明显的限制是没有泛型。
所以,你应该使用这样一个简单的List:
List where;
而不是使用泛型。
答案 1 :(得分:0)
这是forum.pentaho.com上的known issue。内置编译器不使用泛型。只需创建一个列表对象,例如:
import java.util.List;
List where;
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException
{
return true;
}
不会引发任何错误。