如何使用开关案例动态调用方法-Java

如何使用开关案例动态调用方法-Java,java,for-loop,methods,switch-statement,Java,For Loop,Methods,Switch Statement,我想调用一个方法。根据参数,将调用某个方法。 目前,我正试图实现这一点使用开关的情况下,但我不能得到它的工作 代码: 我试图从get方法中获取一个大的十进制值,有什么方法可以做到这一点吗?如果所有这些方法都返回字符串,请不要使用双引号: case 3: getoption = bar.getOneMonth(); break; case 4: getoption = bar.getTwoMonth(); break; case 5: getoption =

我想调用一个方法。根据参数,将调用某个方法。 目前,我正试图实现这一点使用开关的情况下,但我不能得到它的工作

代码:


我试图从get方法中获取一个大的十进制值,有什么方法可以做到这一点吗?如果所有这些方法都返回字符串,请不要使用双引号:

case 3:
    getoption = bar.getOneMonth();
    break;
case 4:
    getoption = bar.getTwoMonth();
    break;
case 5:
    getoption = bar.getThreeMonth();
    break;

如果您使用的是Java8,那么可以使用方法引用/lambda来实现这一点。比如:

//我不知道“getOneMonth”等返回的是什么或作为参数的是什么。。。
//这假设它们花费很长时间,并返回一个字符串,因为我不知道。
函数选择=null;
交换机(速率索引){
案例3:
choice=bar::getOneMonth;
打破
案例4:
choice=bar::gettwomons;
打破
// ...
违约:
抛出新的HissyFit();
}
对于(最终月利率:bar.getMonthlyRates()){
最终字符串methodCallResult=choice.apply(rates.getSomeLong());
}

get方法没有任何参数,并且返回一个大的小数。
Supplier
可以工作。但是如果你只需要调用它们一次,就像另一个答案所说的,你可以将结果存储为
BigDecimal
,然后使用它。假设我将它放入for循环中?对不起,我不明白?
case 3:
    getoption = bar.getOneMonth();
    break;
case 4:
    getoption = bar.getTwoMonth();
    break;
case 5:
    getoption = bar.getThreeMonth();
    break;