有 Java 编程相关的问题?

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

用户输入的Java运行方法

我希望有一个文本字段,并运行用户输入的任何内容。所以如果用户输入, aPackage.AClass.aMethod(parms),它将在包、类和参数中运行该方法。这可能吗? 我希望这样做的原因是,我可以调试我的代码,将程序置于“开发人员模式”,并能够执行任何命令


共 (2) 个答案

  1. # 1 楼答案

    如果您知道classname、methodname、input params类型,那么使用反射就可以实现这一点。下面是一个小代码片段:

                //load the AppTest at runtime
        Class cls = Class.forName("aPackage.AClass");
        Object obj = cls.newInstance();
    
        //call the printIt method
        Method method = cls.getDeclaredMethod("aMethod", noparams);
        method.invoke(obj, null);
    
  2. # 2 楼答案

    是的,这是可能的。使用Java反射API(tutorial on docs.oracle.com),可以按名称访问类及其方法。如果不知道参数的类型是重载方法,则可能会出现问题。请注意,让用户执行随机代码是一个潜在的安全问题