java - 更改java中动态调用的方法的名称

标签 java methods dynamic

我有一个对象“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/

相关文章:

java - 如何在Java中创建两个具有共享数据的数组

java - Liquibase 与数据库交互

c# - 不使用dynamic关键字的动态双重调度

c - 扩展动态分配的指针数组

使用 go 动态创建编译后的二进制文件

java - 从文件系统中的任何位置使用 Spring-Boot 和 Spring-MVC 提供文件服务

java - Liquibase:当 changelog.xml 的文件存在时收到 "file does not exist"异常

java - 搜索和排序值

java - 调用方法中的数组被调用方法数组覆盖,没有任何返回语句

python - 在 python 中定义方法类型的最佳实践