Utilisation de la classe comme nom de champ dans JDT dom
-
06-07-2019 - |
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)
La solution
Comme mentionné dans ce fil :
<Type>.class
n'est pas un nom simple habituel, mais plutôt unTypeLiteral
. 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 )