java - 如何创建给定 IField 的 FieldDeclaration(Eclipe 插件)

标签 java eclipse plugins eclipse-plugin

鉴于我可以访问 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/

相关文章:

java - 将列表类型添加到关联

eclipse - 使用在 MPS 工具/intellij idea 之外的 jetBrains MPS 工具中创建的语言

更改目标 sdk 时 Android 项目不运行

java - 保持oracle连接存活,访问oracle

java - 包含 "{}"的匹配字符串。正确的方法是什么?

java - Spring数据查询限制作为参数

java - 泛型和 TreeSet

version-control - Maven Perforce 插件突然需要密码?

javascript - Javascript插件读取条形码

javascript - 插件无法在带有 React JS 的 Webpack 中工作