如何向IType添加枚举常量字段

时间:2014-10-16 13:39:50

标签: java eclipse enums eclipse-jdt

value值应该为type类型添加新的枚举常量?

public void addEnumConstant(IType type, String value){
    if(type.isEnum()){
        type.createField(value, null, false, null);
    }
}

编辑: 我想我太简短了,所以我添加了关于我的问题的更多信息

我正在使用JavaModel框架,并希望向IType对象添加枚举常量。我想避免明确使用AST。

通过以下代码很容易为类型添加新方法:

IType type = [...];
type.createMethod("public void method(){}", null, false, null);

我也可以添加一个变量字段:

type.createField("public int var", null, false, null);

但我不知道如何添加枚举常量。

1 个答案:

答案 0 :(得分:0)

IType提供了一种创建具有给定内容的类型的方法。这也可以用于Enum。

createType(String value, IJavaElement sibling, boolean force, IProgressMonitor monitor)

<强>更新

如果您有权访问compliation单元,那么您可以在您的IType中创建一个EnumConstantDeclaration AST节点。

ICompilationUnit iCUnit = type.getCompilationUnit()

// convert iCUnit to CompilationUnit

EnumConstantDeclaration constant = compilationUnit.getAST().newEnumConstantDeclaration();
constant.setName(parse.getAST().newSimpleName("constant name"));

将ICompilationUnit转换为CompilationUnit的代码:

//Get the compilation unit for traversing AST
final ASTParser parser = ASTParser.newParser(AST.JLS4);
parser.setSource(javaElement.getCompilationUnit());
parser.setResolveBindings(true);

final CompilationUnit compilationUnit = (CompilationUnit) parser.createAST(null);