我正在开发一个android测试应用程序,我将访问android.view package
的所有内部类。android。视图是存在于jar文件中的包。我尝试通过加载包名,但它不显示类,如果有人尝试这个已经有了,请帮忙。
这是我到目前为止尝试的:
public static void main() throws ClassNotFoundException{
Class o =Class.forName("android.view");
Class[] C=o.getDeclaredClasses();
for(int i=0;i<C.length;i++) {
Classname = C[i].getName();
ClassesDisplayActivity.your_array_list3.add(Classname);
Log.i("Ramu","classname "+ C[i].getName());
}
}
}
不可能在运行时使用标准类装入器确定包中的所有类。
使用这个库可能会有一些运气:
https://code.google.com/p/reflections/Package不是一个类。不能为包调用Class.forName()
,也不能使用getDelcaredClasses()
访问属于类的类。
我不知道你真正需要的是什么,所以我建议你在另一个问题中解释。也许你会得到更好的解决方案。
然而,如果你真的需要这个,你必须这样做:
- 通过调用
System.getProperty(java.class.path)
获取类路径 - 用冒号 将此属性拆分为其元素
- 遍历列表并读取每个资源。如果资源是jar,你可以使用ZipInputStream,如果是目录,使用
File
类。 - 过滤你在#3得到的资源列表。
幸运的是,你可以使用名为Reflections的第三方库来帮助你完成所有这些,而无需编写代码。