…alguém ai sabe como eu faço pra pegar o nome de todas as classes de um determinado pacote via Reflection ??? …tentei usar Package pa = Package.getPackage("nome.do.meu.pacote"); consegui pegar o pacote mas o que quero mesmo é capturar o nome de todas as classes contidas neste pacote …
Eu particularmente achei muito podre esta solução, mas…
A propósito, a reflection serve para você a partir do nome instânciar classes e invocar métodos.
breffo
…valeu !!! 8)
D
diegolenhardt
da uma olhada no codigo abaixo...
/* * ClassesDoPacote.java * * Created on July 24, 2007, 10:04 AM * */packagebr.com.maxiconsystems.embarcador.util;importjava.io.File;importjava.lang.annotation.Annotation;importjava.lang.reflect.Field;importjava.util.ArrayList;/** * * @author diego */publicclassClassesDoPacote{publicClassesDoPacote(){try{Class[]classes=getClasses("br.com.maxiconsystems.embarcador.modelo");for(inti=0;i<classes.length;i++){//System.out.println(classes[i].getName());}}catch(ClassNotFoundExceptionex){ex.printStackTrace();}}publicstaticClass[]getClasses(Stringpckgname)throwsClassNotFoundException{ArrayListclasses=newArrayList();// Get a File object for the packageFiledirectory=null;try{directory=newFile(Thread.currentThread().getContextClassLoader().getResource(pckgname.replace('.','/')).getFile());}catch(NullPointerExceptionx){thrownewClassNotFoundException(pckgname+" does not appear to be a valid package1");}if(directory.exists()){// Get the list of the files contained in the packageString[]files=directory.list();for(inti=0;i<files.length;i++){// we are only interested in .class filesif(files[i].endsWith(".class")){// removes the .class extension//classes.add(Class.forName(pckgname+'.'+files[i].substring(0, files[i].length()-6)));Field[]campos=null;System.out.println("Tabela: "+files[i].substring(0,files[i].length()-6));campos=Class.forName(pckgname+'.'+files[i].substring(0,files[i].length()-6)).getFields();// getDeclaredFields();for(intj=0;j<campos.length;j++){System.out.println(campos[j].getName());}classes.add(Class.forName(pckgname+'.'+files[i].substring(0,files[i].length()-6)));}}}else{thrownewClassNotFoundException(pckgname+" does not appear to be a valid package2");}Class[]classesA=newClass[classes.size()];classes.toArray(classesA);returnclassesA;}publicstaticvoidmain(Stringargs[]){java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newClassesDoPacote();}});}}
breffo
…esta solução so funciona pra pacotes da própria aplicação, se o pacote estiver no classPath não adianta muito , vou ter que achar outra solução que faça isso, dado o nome de um pacote (estando ou não no classPath) busque o nome das classes contidas no mesmo !!!
…se conseguir eu posto aqui !!!