Tôi sẽ không đăng toàn bộ mã nguồn lên vấn đề này tại đây vì nó khá dài nhưng tôi sẽ khiến mọi người bắt đầu.
Tất cả các tài liệu mà bạn sẽ cần đang ở đây:. http://publib.boulder.ibm.com/infocenter/iadthelp/v6r0/index.jsp?topic=/org.eclipse.jdt.doc.isv/reference/api/org/eclipse/jdt/core/dom/package-summary.html
Document document = new Document("import java.util.List;\n\nclass X\n{\n\n\tpublic void deleteme()\n\t{\n\t}\n\n}\n");
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setSource(document.get().toCharArray());
CompilationUnit cu = (CompilationUnit)parser.createAST(null);
cu.recordModifications();
Điều đó sẽ tạo ra một đơn vị biên dịch cho bạn từ các mã nguồn mà bạn vượt qua trong
Bây giờ đây là một chức năng đơn giản mà in ra tất cả các phương pháp bên trong các định nghĩa lớp trong những gì bạn đã vượt qua:
List<AbstractTypeDeclaration> types = cu.types();
for(AbstractTypeDeclaration type : types) {
if(type.getNodeType() == ASTNode.TYPE_DECLARATION) {
// Class def found
List<BodyDeclaration> bodies = type.bodyDeclarations();
for(BodyDeclaration body : bodies) {
if(body.getNodeType() == ASTNode.METHOD_DECLARATION) {
MethodDeclaration method = (MethodDeclaration)body;
System.out.println("method declaration: ");
System.out.println("name: " + method.getName().getFullyQualifiedName());
System.out.println("modifiers: " + method.getModifiers());
System.out.println("return type: " + method.getReturnType2().toString());
}
}
}
}
Điều này sẽ giúp bạn bắt đầu.
Phải mất một thời gian để làm quen với điều này (rất nhiều trong trường hợp của tôi). Nhưng nó hoạt động và là phương pháp tốt nhất mà tôi có thể nắm được.
Chúc may mắn;)
ExtremeCoder
Edit:
Trước khi tôi quên, đây là hàng nhập khẩu mà tôi sử dụng để làm việc này (tôi mất khá nhiều thời gian để có những tổ chức này):
org.eclipse.jdt.core_xxxx.jar
org.eclipse.core.resources_xxxx.jar
org.eclipse.core.jobs_xxxx.jar
org.eclipse.core.runtime_xxxx.jar
org.eclipse.core.contenttype_xxxx.jar
org.eclipse.equinox.common_xxxx.jar
org.eclipse.equinox.preferences_xxxx.jar
org.eclipse.osgi_xxxx.jar
org.eclipse.text_xxxx.jar
Nơi xxxx đại diện cho một số phiên bản.