【发布时间】:2013-03-09 07:35:00
【问题描述】:
所以我有一个包含扩展 JPanel 的类的包,我想将它们作为选项卡动态添加。一开始我使用了一个工厂,并在其中注册了所有类并且它可以工作,但是现在我想在不知道它们的名称的情况下加载包中的所有类。我已经尝试了几件事,包括Reflections library(我觉得这很令人困惑),但我无法让它们工作。感谢您的帮助。
这是我的一个试验:
public static void registerTab() {
String pkg = TabA.class.getPackage().getName();
String relPath = pkg.replace('.', '/');
URL resource = ClassLoader.getSystemClassLoader().getResource(relPath);
if (resource == null) {
throw new RuntimeException("Unexpected problem: No resource for "
+ relPath);
}
File f = new File(resource.getPath());
String[] files = f.list();
for (int i = 0; i < files.length; i++) {
String fileName = files[i];
String className = null;
String fileNm = null;
if (fileName.endsWith(".class")) {
fileNm = fileName.substring(0, fileName.length() - 6);
className = pkg + '.' + fileNm;
}
if (className != null) {
if (!tabClasses.containsKey(className))
tabClasses.put(fileNm, className);
}
}
}
【问题讨论】:
-
反射出了什么问题?
标签: java design-patterns