| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
ClassListerharja 27.09.04 13:24 Listaa ajonaikaisesti käytössä olevat luokat
/* * Created on 27.9.2004 * Mitä kivaa löytyikään ClassLoaderin sorsaa lukiessa... :) * Kyseinen luokka sisältää memberin private Vector classes jossa on listattuna * kaikki ladatut luokat. Sen listaamiseksi tarvittiin hieman kikkailua, mutta onnistui aika kivasti. */ import java.lang.reflect.Field; import java.util.Iterator; import java.util.Vector; /** * @author mharju */ public class ClassLister { public static Iterator listClasses(ClassLoader c) throws NoSuchFieldException, IllegalAccessException { // Otetaan se lataaja Class loader=c.getClass(); // Mennään niin kauan alaspäin hierarkiaa, kunnes saadaan tuo luokka missä on // määritelty private Vector classes (java.lang.ClassLoader) while(loader != java.lang.ClassLoader.class) { loader=loader.getSuperclass(); } // Otetaan se kenttä Field classes_field=loader.getDeclaredField("classes"); // Asetetaan se saatavaksi classes_field.setAccessible(true); // Muunnetaan oikeaan muotoon Vector classes=(Vector)classes_field.get(c); // Ja palautetaan iteraattori siihen return classes.iterator(); } public static void main(String[] args) { // Luodaan pari oliota Ykkone yks=new Ykkone(); Kakkone kaks=new Kakkone(); // Otetaan classloaderi mille tuo listaus tehdään (tämän luokan classloader siis) ClassLoader loader=ClassLister.class.getClassLoader(); while(loader != null) { System.out.println("Loaderi: "+loader); try { // iteroidaan kentät läpi for(Iterator i=listClasses(loader); i.hasNext();) System.out.println("\t "+i.next()); } catch(NoSuchFieldException e) { } catch(IllegalAccessException e) { } // mennään vanhempaan loader=loader.getParent(); } } } class Ykkone { public Ykkone() { System.out.println("Ykkönen luotu!"); } } class Kakkone { public Kakkone() { System.out.println("Kakkone luotu!"); } } Ztane 20:06 27.9.04 1337 Ztane 10:47 1.10.04 No kuka anto miinuksen? törkeetä! harja 15:50 1.10.04 Mulla on hyvä veikkaus mutta en lähde spekuloimaan :D Jotkut ilmeisesti ottaa hieman liian tosissaan... |
![]() Haku
|