0

我有一个类数组,如下所示:

private static final Class[] testerClasses={
    Tester1.class
};

我需要它是这样的,所以我可以启动 Android 意图,如下所示:

intent =new Intent(this,testerClasses[0]);
startActivity(intent);

我试图弄清楚如何做以下事情,我真的很难弄清楚如何去做......

  1. 我需要从类的实例中调用函数。在大多数情况下,这些是静态或类似静态的函数,因此仅获取函数的实例就足够了。
  2. 我需要确保我可以按照 Intent 结构的要求传递课程。

我为什么要这样做?有时我想像调用意图一样调用函数,有时我只想获取有关意图的数据,而不必调用它。我的 abstractTester 类(所有具体的测试器类都继承自)包含一些东西,比如测试的名称,在 Intent 开始之前就很方便了。

谢谢您的帮助!

4

3 回答 3

1

您将无法使用Intent. 相反,在意图中传递类名;接收者可以通过loadClass()

一旦接收者拥有类对象,它就可以使用反射来调用预期的方法。

于 2012-12-05T21:45:51.107 回答
1

正确的解决方案是:

private static final abstractTester[] testerClasses={
    new Tester1()
};

intent =new Intent(this,testerClasses[0].getClass());
startActivity(intent);

然后,如果我需要引用该类,我就可以做到。奇迹般有效!

于 2012-12-05T22:55:03.037 回答
0

您好,您可以尝试使用下面的代码,

ArrayList<Class<?>> a = new ArrayList<Class<?>>();
a.add(MainActivity2.class);
a.add(MainActivity.class);

Intent intent =new Intent(this,a.get(0));
startActivity(intent);
于 2012-12-05T21:51:10.880 回答