2

我正在使用 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];

我该怎么办?

4

2 回答 2

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 )

希望这可以帮助...

于 2012-10-17T14:17:32.370 回答
1

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

于 2012-10-17T14:08:59.083 回答