我有许多子游戏,例如SubGame1,SubGame2等。每个子游戏都派生自SubGame类,并实现了静态String getDescription()函数。

我想访问这些描述,例如SubGame1.getDescription(),SubGame2.getDescription()等。

但是我想使用代码循环,并不是所有的子游戏都会存在。

当我仅知道游戏编号时,如何为子游戏调用getDescription()。就像是:

String description = Class.forName(this.getPackageName()+".SubGame"+subGameNo.getDescription();


但是返回:
    对于类型Class ,未定义方法getDescription()。

有任何想法吗?

最佳答案

您可以调用它,但是必须通过java.lang.reflect类来实现。 Class.forName给您一个Class实例。然后,您调用getMethod获得Method,然后可以在其上调用invoke

从我的头顶上:

Class cls;
Method getDescription;
String description;

cls = Class.forName(this.getPackageName() + ".SubGame" + subGameNo);
getDescription = cls.getMethod("getDescription");
description = getDescription.invoke(null);


...但是您可能需要稍微使用args。

10-08 14:13