在android.accounts.AccountManager:
的上下文中public class AccountManager {
private abstract class AmsTask extends FutureTask<Bundle> implements AccountManagerFuture<Bundle> {
...
}
}
我想使用反射按名称查找内部类,因为我需要一个Class
对象来确定成员方法的静态性。在简单的情况下
public class AccountManager {
public class Foo {
...
}
}
可以使用Class.forName("android.accounts.AccountManager$Foo")
完成此操作。但是,private
修饰符消除了这种可能性。我尝试搜索Class.forName("android.accounts.AccountManager").getDeclaredClasses()
,但它返回一个空列表。它的specification涵盖了private
个成员类,所以我不知道为什么它不会被getter返回。 我认为它与 abstract
有关。
编辑:实验显示getDeclaredClasses()
可以使用以下代码段,但不适用于实际的Android类。
public class Test {
private abstract class AmsTask extends LinkedList implements TestInterface {
...
}
private interface TestInterface{}
}
使用AccountManager的类加载器的建议可能会有所帮助,但结果并不富有成效。
Class am = Class.forName("android.accounts.AccountManager");
Class.forName("android.accounts.AccountManager$AmsTask",false,am);
在后一次通话中导致ClassNotFoundException
。