我希望有一个文本字段并运行用户输入的任何内容。因此,如果用户输入,
aPackage.AClass.aMethod(parms)
,它将在包,类和这些参数中运行该方法。这可能吗?
我想要这个的原因是我可以调试我的代码并将程序放入"开发人员模式"并能够执行任何命令。
答案 0 :(得分:0)
如果您知道classname,methodname,输入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);
答案 1 :(得分:0)
是的,有可能。使用Java Reflection API(tutorial on docs.oracle.com),您可以按名称访问类及其方法。如果您不知道参数类型的潜在问题是重载方法。请注意,让用户执行随机代码是一个潜在的安全问题。