Parse Annotations using Eclipse JDT
もっと単純な実装望む…
private static Annotation annotation(String str) { Map<String, String> options = new HashMap<String, String>(); options.put(JavaCore.COMPILER_SOURCE, "1.5"); ASTParser parser = ASTParser.newParser(AST.JLS3); parser.setCompilerOptions(options); parser.setKind(ASTParser.K_STATEMENTS); parser.setSource((str + " int $;").toCharArray()); Block block = (Block) parser.createAST(null); List<?> stmts = block.statements(); if (stmts.size() != 1) { throw new IllegalArgumentException(str); } VariableDeclarationStatement stmt = (VariableDeclarationStatement) stmts.get(0); List<?> modifiers = stmt.modifiers(); if (modifiers.size() != 1) { throw new IllegalArgumentException(str); } return (Annotation) modifiers.get(0); }