2012-04-11 49 views
1

在Android環境下,我需要列出其中一個類的所有子類。 我看到有樣本閱讀目錄....但我想通過詢問線程或應用程序級別或另一個正在運行的對象來找到它們。我的一個類的子類列表

下的iOS我用objc_getClassList,然後我選擇,我很感興趣的人。

劑量的人知道,如果有辦法找到一個乾淨的解決方案就像objc_getClassList上通用的Java或特定的Android庫?

在此先感謝。 PS:我想列出的所有這些類都在某個java包中

+0

List <?擴展您的類> – 2012-04-11 10:37:50

+0

對於那些對這個問題感興趣的人,我認爲我不明白爲什麼不可能向VM請求所有目前的類列表。因爲VM不知道這個列表。與目標C不同,在Java env中。每個類只有在被調用時才知道。只有在運行時引用類時,纔會調用「static {instructions;}」扇區。 – Freddie 2012-04-12 04:50:35

回答

0

我真的不知道爲什麼我明白你的問題,但你可以做一個類叫做AllClasses什麼的,在它把一個ArrayList類;然後在每個子類中都做 AllClasses.subclasses.add(this)。

謝謝你應該去做

+0

OOL的這種鬆散的興趣。當需要新的子類時,我需要爲用戶添加新的功能。每次程序員添加一個子類時,都會出現一個新的功能!如果在Java中不可能,我們會像這樣做(就像一個C數組函數指針)! – Freddie 2012-04-12 04:00:26

+0

終於我按照自己的方式做了一些事情:\'public class PortHelper { } \t static ArrayList > portSubclassList; \t static { \t \t portSubclassList = new ArrayList >(); \t} \t靜態公共無效addPortSubclass(類 C){ \t \t portSubclassList.add(C); \t}} \' – Freddie 2012-04-12 06:22:50

0

您需要使用introspection和類加載器來找出類並測試它們是否是給定超類型的子類型。下面是J2SE一個有趣的實現您的問題:http://nonstop-rp.blogspot.fr/2010/05/java-reflection-know-subclasses-of.html

+0

感謝您的回答,因爲它不會在android environement下變成。我會花時間看看爲什麼。這正是我正在尋找的。 Franckly說我認爲這種功能已經集成到所有的OOL中! – Freddie 2012-04-12 03:45:09

相關問題