我有许多子游戏,例如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。