This page was exported from - JPinup Export date: Fri Jun 2 0:33:48 2017 / +0000 GMT Come utilizzare il parser di un file come se fosse una classe Java!! A volte capita di dover analizzare il contenuto di una classe Java, estraendo le annotation, i tipi di ritorno, i nomi dei metodi e tutte le altre proprietà disponibili. Nel caso in cui la classe sia all'interno del class loader dell'applicazione, possiamo sfruttare direttamente il metodo getClass() nativo della JDK e scorrere tutti i dettagli che ci servono. Ma se quella classe è un file al di fuori della nostra applicazione e vogliamo evitare problemi di compilazione o di trascinarci dentro al class loader file inutili e non logicamente connessi alle funzionalità sviluppate? ESISTE UNA SOLUZIONE ED E' MOLTO SEMPLICE: Innanzitutto nel pom bisogna inserire la dipendenza <dependency> <groupId>com.google.code.javaparser</groupId> <artifactId>javaparser</artifactId> <version>1.0.11</version> </dependency> Questa dipendenza contiene le utility per effettuare il parsing di un file che ha la struttura di una classe Java. CompilationUnit cu; cu = JavaParser.parse(srcFile); Dopodichè possiamo analizzare tutto ciò che ci interessa della classe, un esempio di ciò che si può fare static void processNode(Node node) throws Exception { if (node instanceof TypeDeclaration) { // do something with this type declaration } else if (node instanceof MethodDeclaration) { // do something with this method declaration } else if (node instanceof FieldDeclaration) { // do something with this field declaration List<AnnotationExpr> listaAnnotation = ((FieldDeclaration) node).getAnnotations(); for (AnnotationExpr annotationExpr : listaAnnotation) { NameExpr name = annotationExpr.getName(); System.out.println(name.toString()); } Type tipo = ((FieldDeclaration) node).getType(); List<VariableDeclarator> listaVariabili = ((FieldDeclaration) node).getVariables(); for (VariableDeclarator variableDeclarator : listaVariabili) { System.out.println(variableDeclarator.toString()); } } for (Node child : node.getChildrenNodes()) { processNode(child); Output as PDF file has been powered by [ Universal Post Manager ] plugin from www.ProfProjects.com | Page 1/2 | This page was exported from - JPinup Export date: Fri Jun 2 0:33:48 2017 / +0000 GMT } } public static void main(String[] args){ File srcFile = new File( "file.java"); CompilationUnit cu; cu = JavaParser.parse(srcFile); processNode(cu); } Questo parser può essere uno strumento molto potente, ad esempio per realizzare generatori di codice o trasformazioni di file. Output as PDF file has been powered by [ Universal Post Manager ] plugin from www.ProfProjects.com | Page 2/2 |