Riposto il codice scritto per trovare le sottoclassi istanziabili di una certa classe astratta data come argomento.
(Non fate caso ai generics, se non li metto mi da dei warning, ma ancora non ho capito il senso di parametrizzare la classe Class...)
Vorrei modificarlo in modo che funzioni anche dall'interno di un file JAR.
Mi date una mano?codice:public final static <T extends Object> Class[] getSubclasses(Class<T> c) { String pacchetto = c.getPackage().getName(); // Nome pacchetto String path = c.getResource(".").getFile(); // QUI DA ERRORE: getResource() = null!!! System.out.println(path); File dir = new File(path); // Trasforma in File File[] classi = dir.listFiles(); // Leggi tutti i File nella directory ArrayList<Class> istanziabili = new ArrayList<Class>(classi.length); Class subclass=null; for (File f : classi) { String r = pacchetto + '.' + f.getName(); try { subclass = Class.forName(r.replaceFirst(".class","")); if ( Modifier.isAbstract(subclass.getModifiers()) ) continue; if (c.isAssignableFrom(subclass)) // subclass e' assegnabile a c istanziabili.add(subclass); } catch (Throwable t) {} } Class[] lista = new Class[istanziabili.size()]; lista = istanziabili.toArray(lista); return lista; }
L'errore e' alla terza riga... sigh...