有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用字符串中的参数执行Java方法

我正在尝试创建一种方法,将完整的方法调用作为字符串提供给函数,然后函数应该尝试实际调用此方法

这应该适用于任何类型、任何数量以及通常任意的参数
声明方法的类将被修复(可能作为该类构造函数的参数提供)

基本上,它应该工作,就好像字符串的内容(不管它们是什么)是函数中的一行一样
显然,此函数只能尝试这样做,并且需要捕获和处理所有异常(例如,当给定类中不存在该方法时)

像这样:

public class Thisclass{

  String example = "Testmethod(1, 4.23, 'test')";

  Class otherclass;

  public void Thisclass(Class implementationClass){
    this.otherclass = implementationClass;
  }

  //Calling myFunction like this: myFunction(example);
  //Should result in this being called: otherclass.Testmethod(1, 4.23, "test");

  public void myFunction(String input){

    try{

      //Something here

    }
    catch(Exception ex){

      //Handle exceptions

    }

  }

}

当我知道使用反射的参数的数量、类型和顺序时,我知道如何做到这一点,但是对于未知数量的未知类型和顺序的参数,我能做到同样的事情吗

我可以将参数的最大总数限制在相对较小的范围内(例如4或5),但我希望参数的类型和顺序相对不受限制
也可以将类型限制为int, float, double, char and String加上所有这些类型的数组

我知道我可以用各种可能的参数来重载一个方法,但这是非常不现实的,因为只允许最多4个整数或整数数组就可以得到8个不同的版本,而允许这两个变量的随机混合就需要31个不同的实现

这可能吗

编辑:
这些评论告诉我,你们中的一些人并不真正理解我想做什么
基本上,我正在解析要使用opengl呈现的HTML文件,我希望能够使HTML文件中的链接或按钮执行某种方法,但我不想指定一种方法,而是将这些方法留给项目的不同部分
想想:<a href="MyMethod(1, 4.23, 'test')">Run Method</a>其中MyMethod可以是任意方法。关于该方法唯一已知的是它是在类otherclass中实现的。解析HTML后,我可以将href属性的值作为字符串获取,因此基本上"MyMethod(1, 4.23, 'test')"

对于那些建议为上述数据类型的每个可能组合和顺序创建/复制方法最简单的人:我做了一个快速计算,只接受上述5种类型中任意组合和顺序的1-4个参数,将需要超过一百万个不同版本的方法。我真的怀疑,创建所有这些方法,并且最终不会以丢失或加倍的方法结束,这比其他任何方法都要快

到目前为止,最好的建议是来自saka1029的建议,基本上创建一个全新的java文件,并使用编译器api编译它,然后运行它。我将对此进行调查,因为这似乎是迄今为止最好的主意


共 (0) 个答案