我有一个“RSTRule”类,它有几个方法,所有方法都以“generate”开头。 在另一个类“RSTRules”中,我想在“RSTRule”中执行所有方法,并在其构造函数中使用for循环。我编写了以下代码,但我不知道如何执行这些方法以及如何调用它们?
public class RSTRules extends ArrayList<RSTRule> {
public RSTRules(){
Class<?> rstRule = Class.forName("RSTRule");
Method[] methods = rstRule.getMethods();
for (Method m : methods) {
if (m.getName().startsWith("generate")) {
//Run the method m
}
}
}
这也是“RSTRule”类的方法
public RSTRule generateBothNotSatisfy_Join(){
this.discourseRelation=DiscourseRelation.Join;
this.nucleus=new NucleusSatelliteInRSTRule("Both_Not_Satisfy_User_Desires_in",propNuc);
this.satellite=new NucleusSatelliteInRSTRule("Both_Not_Satisfy_User_Desires_in",propSat);
this.ruleName="BothNotSatisfy_Join";
this.condition=null;
this.heuristic=10;
return this;
}
答案 0 :(得分:0)
Class是Java中的metaClass(描述其他类的类)。所以你不能在它上面调用方法。要调用方法,您需要生成要调用方法的类的实例。
这是一个小小的通用示例:
Method[] methods = Object.class.getMethods();
Object o = new Object();
for (Method method : methods) {
method.invoke(o, {params for method});
}
Invoke方法有两个参数。第一个是您要调用方法的实例,第二个是方法的参数。 (如果方法不采取任何方法,则为null)
答案 1 :(得分:0)
public RSTRules(){
Class<?> rstRule = Class.forName("RSTRule");
Method[] methods = rstRule.getMethods();
for (Method m : methods) {
if (m.getName().startsWith(" generate")) {
method.invoke(rstRule, {params for method});
}
}
}
详情请参阅以下链接