这是我的方法:
Feature [] getFeatures(File dir)
我正在尝试浏览目录,检查每个类文件。任何类型为'Feature'的类,我想加载它的一个实例。然后我想返回这些实例的数组。
这是怎么做到的?
谢谢。
编辑:
这就是我现在所拥有的:
private static LinkedList<Feature> getFeaturesInDirectory(File dir) throws ClassNotFoundException {
LinkedList<Feature> features = new LinkedList<Feature>();
ClassLoader cl = new IndFeaClassLoader();
// list all files in directory
for(String s : dir.list()) {
Class klass = cl.loadClass(s);
try {
Object x = klass.newInstance();
if (x instanceof Feature) {
features.add((Feature)x);
}
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
}
}
return features;
}
答案 0 :(得分:1)
使用:
MyClassName mcn = (MyClassName) Class.forName("MyClassName").newInstance();
但请注意,这依赖于ClassLoader。如果类不是来自与当前类(或系统类加载器)相同的位置,则需要指定类加载器:
File myDir = new File("/some/directory/");
ClassLoader loader = null;
try {
URL url = myDir.toURL();
URL[] urls = new URL[]{url};
ClassLoader loader = new URLClassLoader(urls);
}
catch (MalformedURLException e)
{
// oops
}
MyClassName mcn =
(MyClassName) Class.forName("MyClassName", true, loader).newInstance();
我认为应该有用,但如果没有,它至少应该让你走上正确的道路。