Question

J'essaie d'ajouter un appel au champ StaticClassName.class permettant d'accéder à une classe existante à l'aide des méthodes Dom de JDT.

Je reçois un IllegalArgumentException lorsque j'essaie de créer un nom simple à l'aide de ast.newSimpleName("class").
Je pense que cela est dû au fait que <=> le traite comme un mot clé lorsqu'il est également utilisé comme nom de champ.

Y a-t-il un moyen de forcer le <=> à accepter & "class &"; comme un identifiant ou un autre moyen d'accéder à l'objet de classe? (cela doit fonctionner à la fois avec des méthodes statiques et non statiques)

Était-ce utile?

La solution

Comme mentionné dans ce fil :

  

<Type>.class n'est pas un nom simple habituel, mais plutôt un TypeLiteral. Je pense donc que votre code devrait ressembler davantage à ceci:

TypeLiteral tr = ast.newTypeLiteral();
tr.setType(ast.newSimpleType(ast.newSimpleName("MyClass")));
  

Ce qui dans le résultat crée l'expression & "; Myclass.class &";

.      

Soit dit en passant, il existe un très joli ASTView plug-in, avec une vue du fichier source Java actuellement édité AST. C'est très utile pour déterminer quels types de nœuds sont corrects pour différentes instructions de langage.   Vous pouvez l'obtenir à partir d'ici

.

(Voir aussi javadoc du noyau AST JDT )

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top