如何在Java函数中转换字符串?

bury_5

我正在尝试制作一个在Java中使用String和double作为参数的函数,如下所示:

public static double calc(String fx, double arg) {
    return fx.convertToFunction(arg);   // Pseudocode

}

例如,要计算数字的余弦(例如PI),代码将是:

calc("cos", Math.PI);

并且函数calc必须将“ c​​os”转换为Math.cos()。

至少有可能吗?

亚当

Java提供了一种称为Reflection的功能这提供了按名称访问方法,变量等的方法。这些功能大多数位于java.lang.Class对象上。

  • java.lang.Math上的Class.getMethod(名称,参数),用于获取java.reflect.Method参考
  • 使用method.invoke(null,args)调用方法引用。这里的null是实例,对于静态方法没有意义

代码

public static void main(String[] args) throws Exception {
    System.out.println(calc("cos", Math.PI));
    System.out.println(calc("sin", Math.PI /2));
}

public static double calc(String fx, double arg) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
    return (Double) Math.class.getMethod(fx, double.class).invoke(null, arg);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章