2012-01-04 75 views
0

我想在我的Java程序中列出/枚舉(在運行時)實現給定接口的所有類,並檢索類名。可能嗎 ?我能怎麼做 ?列出實現給定接口的包中的所有類

+0

[你如何找到Java中給定類的所有子類?](http://stackoverflow.com/questions/492184/how-do-you-find-all-subclasses-of-a- java中的給定類) – rsp 2012-01-04 16:18:18

+0

挑一個 http://stackoverflow.com/questions/435890/find-java-classes-implementing-an-interface和http://stackoverflow.com/questions/3123095/如何在類路徑中找到所有實現界面 您可能需要微調結果.. – Jayan 2012-01-04 16:21:16

+0

清除@Jayan列出的問題的重複項 – parasietje 2012-01-04 16:39:32

回答

1

你應該用java Reflection

此鏈接提供了涵蓋所有可以使用反射做的事的教程。你可以建立你的代碼從那裏

2

開始詳細說明如何,使用反射做:

您可以Thread.currentThread().getContextClassLoader()開始。使用 作爲路徑包的名稱,得到的資源:Enumeration<URL> resources = classLoader.getResources(path);

然後,你將不得不文件名從資源解碼,並超過他們迭代(遞歸因爲有些人可能是目錄)。過濾.class文件的資源,使用Class.forName()實例化類並檢查它們實現的接口。

相關問題