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 に答える