[英]How do I load instances of a certain class from a java directory?
這是我的方法:
Feature [] getFeatures(File dir)
我正在嘗試瀏覽目錄,檢查每個類文件。 任何類型為“功能”的類,我都想加載它的一個實例。 然后,我想返回這些實例的數組。
怎么做?
謝謝。
編輯:
這是我現在所擁有的:
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();
但是請注意,這依賴於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();
我認為應該可以,但是如果不能,那么至少可以使您走上正確的道路。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.