gpt4 book ai didi

java - 如何从 java 目录加载某个类的实例?

转载 作者:行者123 更新时间:2023-12-01 15:54:00 26 4
gpt4 key购买 nike

这是我的方法:

Feature[] getFeatures(文件目录)

我正在尝试浏览目录,检查每个类文件。任何类型为“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;

}

最佳答案

使用:

MyClassName mcn = (MyClassName) Class.forName("MyClassName").newInstance();

但是请注意,这依赖于类加载器。如果类不是来自与当前类(或系统类加载器)相同的位置,您需要指定一个类加载器:

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();

认为应该可行,但如果不行,它至少应该让您走上正确的道路。

关于java - 如何从 java 目录加载某个类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5440238/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com