2012-04-11 65 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

相关问题