我有一个对象“JudgesSubmission”,具有以下方法:
public String getInnovationGrade1() {
return innovationGrade1;
}
public String getInnovationGrade2() {
return innovationGrade2;
}
public String getInnovationGrade3() {
return innovationGrade3;
}
public String getInnovationGrade4() {
return innovationGrade4;
}
现在,当调用这些方法时,我想将它们放入一个循环中,其中被调用的方法名称获取附加到其末尾的循环索引,以更改所调用的方法。这可能吗? 例如,以下代码永远不会工作,但我编写它是为了解释我需要什么:
judgesSubmission metricScores= new judgesSubmission;
int metricSum=0;
for (int i=0;i<4;i++){
metricSum=metricSum
Integer.parseInt(metricScores.getInnovationGrade+"i"());
}
有没有办法做到这一点,或者我总是写完整的方法名称?
最佳答案
你想做的事情是不可能的......但是通过反射(reflection),例如:
MyObject.class.getMethod("mymethod"+i);
如果没有反射(reflection),您可以使用 Supplier<String>
:
public void process(Supplier<String>... suppliers){
judgesSubmission metricScores= new judgesSubmission;
int metricSum=0;
for (Supplier<String> supplier : suppliers){
Integer.parseInt(supplier.get());
}
}
并将其命名为:
MyObject myObject = new MyObject();
process(()->myObject.getInnovationGrade1(),
()->myObject.getInnovationGrade2(),
()->myObject.getInnovationGrade3(),
()->myObject.getInnovationGrade4());
关于java - 更改java中动态调用的方法的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47336552/