从包中访问类

时间:2014-05-15 11:47:32

标签: java android reflection

我正在开发一个Android测试应用,并且我将访问android.view package的所有内部类。 android.view是一个包含在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());
 }
}
}

2 个答案:

答案 0 :(得分:1)

无法在运行时使用标准类加载器确定包中的所有类。

你可能对这个图书馆运气不错:

https://code.google.com/p/reflections/

答案 1 :(得分:0)

包不是一个类。您无法使用Class.forName()为属于类的包和访问类调用getDelcaredClasses()

我不知道你真正需要什么,所以我建议你在另外的问题中解释一下。可能你会得到更好的解决方案。

但是如果你真的需要这个,你必须做到以下几点:

  1. 致电System.getProperty(java.class.path)
  2. 获取您的课程路径
  3. 通过冒号
  4. 将此属性拆分为其元素
  5. 遍历列表并读取每个资源。如果资源是jar,你可以使用ZipInputStream,如果它是一个使用File类的目录。
  6. 过滤您在#3。
  7. 获得的资源列表

    幸运的是,您可以使用名为Reflections的第三方库来帮助您完成所有这些而无需编写代码。