鉴于我可以访问 IField 字段(从另一个 Java 文件解析),如何创建 FieldDeclaration 以便将其添加到 AST?
String varName = field.getElementName();
String typeName = Signature.toString(field.getTypeSignature());
VariableDeclarationFragment fieldFrag = ast.newVariableDeclarationFragment();
fieldFrag.setName(ast.newSimpleName(varName));
FieldDeclaration field = ast.newFieldDeclaration(fieldFrag);
Type fieldType = ast.newSimpleType(ast.newSimpleName(typeName));
field.setType(fieldType);
field.modifiers().add(ast.newModifier(modifierKeyword));
以上内容
类型 fieldType = ast.newSimpleType(ast.newSimpleName(typeName));
仅当 typeName 不是 java 关键字时才有效。是否有另一种方法可以简单地创建包含所有 IField 信息(修饰符、类型、变量)的 fieldDeclaration
谢谢
最佳答案
我找到了一种使用 copySubtree 的方法:
AST ast = targetCompilationUnit.getAST();
FieldDeclaration oldFieldDeclaration = ASTNodeSearchUtil.getFieldDeclarationNode(field, sourceCompilationUnit);
Type oldType = oldFieldDeclaration.getType();
Type newType = (Type) ASTNode.copySubtree(ast, oldType);
然后可以使用 newType 将其插入 FieldDeclaration
关于java - 如何创建给定 IField 的 FieldDeclaration(Eclipe 插件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4184342/