簡體   English   中英

如何從Java目錄加載特定類的實例?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM