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);
但我不知道如何添加枚举常量。
答案 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);