CodeModel如何使用com.sun.codemodel获取特定索引的值

时间:2012-10-17 13:37:31

标签: java arrays sun-codemodel

我正在使用com.sun.codemodel来生成我的类。 我需要根据索引参数动态获取数组值。

所以我有一个假设要返回一个数组的调用

 JcodeModel model = new JCodeModel();
 JPackage jPackage = codeModel._package(packageName);
     .....
 JType personType = codeModel._ref(Person.class);
 jVar personObject = method.decl(personType, "person", JExpr._new(personType));
 personObject.invoke("getRoles");???

在这种情况下,getRoles()返回一个数组,我想获得一个特定索引的对象。 像这样的东西

int index = 0;
Person person = new Person();
String role = person.getRoles()[index];

我该怎么办?

2 个答案:

答案 0 :(得分:3)

不知道我是否正确,但也许以下内容适合你:

JInvocation invocation = personObject.invoke("getRoles");
JArrayCompRef arrayCompRef = invocation.component(indexExpression);

在以下JavaDoc中找到: http://codemodel.java.net/nonav/apidocs/com/sun/codemodel/JExpressionImpl.html#component(com.sun.codemodel.JExpression

希望这会有所帮助......

答案 1 :(得分:1)

最糟糕的情况是你总是可以使用JBlock.directStatement()......