1、如果使用spring, 可以使用以下方式获得spring context中的所有的类:
public class GameReflect implements ApplicationContextAware {
public ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
this.applicationContext = applicationContext;
}
public void getAllClass(){
applicationContext.getBeansOfType(GameBaseAction.class);
}
}
2、除此之外,也可以从classloader中使用一种hack方式获得所有的类:
package cn.joylab.service;
import java.lang.reflect.Field;
import java.util.Vector;
public class ClassLoaderTest extends GameBaseManagerTestCase {
@org.junit.Test
public void test1() {
try {
Field f = ClassLoader.class.getDeclaredField("classes");
f.setAccessible(true);
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
Vector<Class> classes = (Vector<Class>) f.get(classLoader);
for (Class c : classes) {
System.out.println(c);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
0 条评论。