如何在Kettle中的用户定义的Java类中创建ArrayList对象?

时间:2016-06-29 05:46:59

标签: java pentaho kettle pentaho-spoon

我试图在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>();行,则代码效果很好。

2 个答案:

答案 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;

}

不会引发任何错误。