我只有大约半年的java经验,所以请原谅我缺乏知识。我尝试了一些谷歌搜索,对此我有一些想法,我需要填补几个漏洞。
我正在尝试为我正在做的程序创建一个“动态工厂”。这样做的基础是我希望人们能够将类文件插入到文件夹中,然后将它们加载到我的工厂中以在以后创建它们的新实例。
这就是我现在所拥有的:
import java.util.HashMap;
import java.util.Map;
public class KitManager {
private Map<String, Class<? extends Kit>> kitMap;
public KitManager() {
kitMap = new HashMap<String, Class<? extends Kit>>();
}
public Kit makeKit(String kitname) {
try {
return kitMap.get(kitname).newInstance();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
现在我想弄清楚的是如何获取文件夹中的所有类,确保它们扩展 Kit,然后将它们插入 Map 以便稍后创建它们的实例。这就是我卡住的地方,我想不出一个好方法来将类加载到地图中,而无需在配置中的某处标识类名和查找字符串。我的想法是在每个类中都有静态代码,将自己插入到 HashMap 中,但我不确定它是如何工作的。我真正想要的只是一个关于如何实现我的目标的想法。(有一个文件夹,用户可以将类输入到(扩展 Kit),然后在我的程序加载时让这些类动态加载到我的 kitMap 中)